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

Disable Memcache from Symfony project on dev environment

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

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

是否有某种标志可以关闭 Memcache?

我不熟悉 Memcache,但处理这种情况的常见方法是在每个环境中使用单独的 config.yml

  1. 将您当前的 memcached 条目从 config.yml 移动到 config_prod.yml(在生产环境中 memcached 将像以前一样工作)
  2. config_dev.yml 中添加类似的 memcached 条目,但使用另一个 class - 您可能需要创建这样的 class,它可能需要扩展 Memcache class 并覆盖您想要以不同方式表现的方法(即 set())。

在此配置中,您将针对不同的环境使用不同的 Memcache class,而在开发环境中,您的 Memcache class 将是 "dummy",这意味着什么都不做。

这是正常的 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 ]方法 它不是杀死内存缓存进程,而是清除所有存储的数据,使它们像过期的一样。