我需要在Symfony中清除我的学说缓存。
命令行中必须有某种方法可以清除缓存。
或者我应该在哪里找到并删除属于缓存的文件?
对于 Symfony 3+:
php bin/console
将列出所有命令,以下与缓存相关:
php bin/console doctrine:cache:clear-metadata
php bin/console doctrine:cache:clear-query
php bin/console doctrine:cache:clear-result
在 Symfony 3 之前:
app/console
将列出你如何做到这一点
app/console doctrine:cache:clear-metadata
app/console doctrine:cache:clear-query
app/console doctrine:cache:clear-result
如果您想在代码中执行此操作(来自Doctrine 的文档):
如果您只是想删除所有缓存条目,您可以使用 deleteAll() 方法执行此操作。
$cacheDriver = new \Doctrine\Common\Cache\ArrayCache(); $deleted = $cacheDriver->deleteAll();
如果您使用 APC,您也可以只调用代码
<?php
$deleted = apc_clear_cache() && apc_clear_cache('user');
在同一服务器上的 php 页面中。这就是 Antho 答案中的 deleteAll() 方法所做的,但您不依赖于 Doctrine Classes。顺便说一句:完整的缓存将被刷新——以防万一你将它用于非 Doctrine 的东西。
我以为我对学说结果缓存发疯了——最后我不得不重新启动 memcached。
我知道这篇文章的标题是 Symfony 2,但对于那些来自谷歌的人来说,如果你有 Symfony 3+,它会是:
bin/console
相对于:
app/console
也许这有点晚了,但就我而言,学说并没有在生产中生成代理类,因为我将其更改auto_generate_proxy_classes
为 true:
#symfony2&3 app/config/config.yml
#symfony4 config/packages/doctrine.yaml (by default true since 4.2)
doctrine:
orm:
auto_generate_proxy_classes: true #"%kernel.debug%"