Symfony app/console cache:clear --env = prod和cache(APC,Memcached等)?

gre*_*emo 11 symfony doctrine-orm symfony-2.3

我正在使用Memcached服务器(以及memcache PHP扩展)来缓存验证器元数据和Doctrine metatada/result/query缓存驱动程序.

一切都按预期工作,与文件系统缓存相比速度很快.

我的问题是,命令是否:

php app/console cache:clear --env=prod --no-debug
Run Code Online (Sandbox Code Playgroud)

自动清除所有类型的缓存(包括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]
Run Code Online (Sandbox Code Playgroud)

Jas*_*wer 15

缓存:明确

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脚本.

换句话说:当您从命令行清除此类缓存时,Web服务器使用的缓存不会受到影响.为了清除Web服务器缓存,您需要从Web服务器本身运行缓存清除脚本.

这对memcached来说不是问题,因为它是一个管理自己内存空间的独立程序.


Tom*_*oms 5

你必须自己清除外部缓存,从doc(SF 2.5):

根据您的设置,您可能还需要执行许多其他操作:[...]清除APC缓存

请参阅:http://symfony.com/doc/current/cookbook/deployment/tools.html#e-other-things