我正在使用 Memcached 服务器(连同 memcache PHP 扩展)来缓存验证器元数据和 Doctrine metatada/result/query 缓存驱动程序。
一切都按预期工作,并且与文件系统缓存相比速度更快。
我的问题是,命令是否:
php app/console cache:clear --env=prod --no-debug
自动清除所有类型的缓存(包括memcache)?
运行此命令并检查服务器统计信息后,项目计数和缓存占用始终相同:
我的配置,其中 %prod_cache% 参数实际上是字符串
memcache
:# Framework Configuration
framework:
validation:
cache: %prod_cache% # Matches validator cache service
# Doctrine Configuration
doctrine:
orm:
metadata_cache_driver:
type: service
id: cache_%prod_cache%
result_cache_driver:
type: service
id: cache_%prod_cache%
query_cache_driver:
type: service
id: cache_%prod_cache%
# DoctrineCacheBundle Configuration
doctrine_cache:
providers:
memcache:
type: memcache
alias: cache_memcache
# Services
services:
validator.mapping.cache.memcache: # Validator cache service
class: Symfony\Component\Validator\Mapping\Cache\DoctrineCache
arguments: [@cache_memcache]
最佳答案
缓存:清除 cache:clear
命令不会清除 Doctrine 缓存。它只清除一些 Symfony 2 框架特定的缓存,主要是 app/cache
(或 var/cache
)目录。
教义命令
为了清除 Doctrine 缓存,使用:
doctrine:cache:clear-metadata --env=prod
doctrine:cache:clear-query --env=prod
doctrine:cache:clear-result --env=prod
附加缓存
如果您使用其他缓存存储,则必须自己清除它们。你可以看看
doctrine:cache:clear-*
命令以获得有关如何创建自己的命令的启发。但是看看你的配置,你对 3 个 Doctrine 缓存和 Symfony Validator 缓存使用了一个缓存存储。所以只调用
doctrine:cache:clear-*
之一应该清除一切。离题
在使用 APC、OPcache 等缓存系统时,您必须了解,当您从命令行运行 PHP 脚本时,使用的内存空间与从 Web 服务器运行 PHP 脚本时不同。
换句话说:当您从命令行清除此类缓存时,网络服务器使用的缓存不受影响。为了清除网络服务器缓存,您需要从网络服务器本身运行缓存清除脚本。
这对 memcached 来说不是问题,因为它是一个单独的程序,管理自己的内存空间。
关于Symfony 应用程序/控制台缓存 :clear --env=prod and cache (APC, Memcached 等)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24353858/