Symfony 应用程序/控制台缓存 :clear --env=prod and cache (APC, Memcached 等)?

标签 symfony doctrine-orm symfony-2.3

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

一切都按预期工作,并且与文件系统缓存相比速度更快。

我的问题是,命令是否:

php app/console cache:clear --env=prod --no-debug

自动清除所有类型的缓存(包括memcache)?

运行此命令并检查服务器统计信息后,项目计数和缓存占用始终相同:

enter image description here

我的配置,其中 %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/

    相关文章:

    symfony - 我可以从 Symfony2 的子模板中注入(inject) javascript block 吗?

    forms - 在 Symfony2 的表单类型中使用自定义服务

    使用 Doctrine DataFixtures 时的 Symfony HttpFoundation UploadedFile "not uploaded due to unknown error"

    symfony - 加载时snc_redis异常

    javascript - ajax请求服务器端脚本( Controller )来获取服务器的状态

    Symfony 6 - 本地主机的连接被拒绝

    javascript - 尝试使用 $compileProvider、CRUD 和引导指令 ng-clink 失败

    symfony - 如何在父类(super class)上应用 UniqueEntity 验证

    symfony - 在 Doctrine 2 中更新(从反面)双向多对多关系?

    forms - 如何从带有实体列表 (CRUD) 的模板中删除实体?