在开发环境中禁用Symfony项目的Memcache

时间:2017-03-08 09:03:43

标签: symfony memcached

  memcached:
    class: Memcache
    calls:
            - [ addServer, ['%memcached_host%', '%memcached_port%'] ]

这是我在config.yml中使用的当前代码,如何在开发环境中指定Memcache不在memcache->set(}方法上缓存数据,并在生产中正常工作。

是否有某种旗帜可以关闭Memcache?

2 个答案:

答案 0 :(得分:3)

我不熟悉Memcache但对此类案例采用的常见方法是在每个环境中使用单独的config.yml

  1. 将您当前的memcached条目从config.yml移至config_prod.yml(在生产环境中memcached将像以前一样工作)
  2. config_dev.yml中添加类似的memcached条目但是使用另一个类 - 您可能需要创建此类,它可能需要扩展Memcache类并覆盖您希望以不同方式运行的方法(即set())。
  3. 在此配置中,您将针对不同的环境使用不同的Memcache类,在开发环境中,您的Memcache类将为“虚拟”,这意味着什么都不做。

答案 1 :(得分:0)

这是常规的config.yml。

services:
  memcached:
    class: Memcache
    calls:
      - [ addServer, ['%memcached_host%', '%memcached_port%'] ]

我在config_dev.yml

中添加了这一行
services:
  memcached:
    class: Memcache
    calls:
      - [ addServer, ['%memcached_host%', '%memcached_port%'] ]
      - [ flush ]

您会注意到下面添加了- [ flush ]方法 它不是杀死memcache过程,而是清除所有存储的数据,使它们过期。