我无法清除缓存(因为缓存已过时)

时间:2015-01-15 11:54:13

标签: symfony caching

尝试部署我更新的Symfony2应用程序,遇到了以下问题。

(请注意,我的应用程序使用the new Symfony 3 directory structure。如果您使用的是当前目录结构,请将bin/console替换为app/console,将var/cache替换为app/cache < / p>

我最近重命名了一个服务类(VariantSlugListener)。在临时服务器上部署应用程序时,运行bin/console assetic:dump --env=prod时出现以下错误:

  

PHP致命错误:类'MyBundle \ Listener \ VariantSlugListener'没有   在发现   /var/www/example.com/staging/var/cache/prod/appProdProjectContainer.php   在第494行

appProdProjectContainer.php的第494行包含以下代码:

return $this->services['3f288d4f09c9906944ba7e17358f669b942397baf9d79d5ff0737bb756df7023_1'] = new \MyBundle\Listener\VariantSlugListener();

无法找到\MyBundle\Listener\VariantSlugListener,因为它已使用最新更新重命名为\MyBundle\EventListener\VariantSlugSubscriber。解决方案是简单地清除Symfony的缓存。

但是,在尝试清除缓存时(使用bin/console cache:clear --env=prod),我得到与assetic:dump命令完全相同的错误。所以我收到错误,因为我的Symfony缓存已过时,但由于错误,我无法清除缓存。

我可以通过手动删除var/cache目录的内容来解决这个问题,但这不是最佳解决方案。

我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

在进行&#39;缓存时,可能会触发VariantSlugListener中处理的一些事件:clear&#39;。因此,您唯一的选择是只删除缓存目录的内容或手动替换值,然后运行cache:clear来预热缓存。