46

我需要在Symfony中清除我的学说缓存。

命令行中必须有某种方法可以清除缓存

或者我应该在哪里找到并删除属于缓存的文件?

4

6 回答 6

135

对于 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 
于 2012-08-06T10:27:44.727 回答
12

如果您想在代码中执行此操作(来自Doctrine 的文档):

如果您只是想删除所有缓存条目,您可以使用 deleteAll() 方法执行此操作。

$cacheDriver = new \Doctrine\Common\Cache\ArrayCache();
$deleted = $cacheDriver->deleteAll();
于 2013-07-05T09:16:17.347 回答
2

如果您使用 APC,您也可以只调用代码

<?php
$deleted = apc_clear_cache() && apc_clear_cache('user');

在同一服务器上的 php 页面中。这就是 Antho 答案中的 deleteAll() 方法所做的,但您不依赖于 Doctrine Classes。顺便说一句:完整的缓存将被刷新——以防万一你将它用于非 Doctrine 的东西。

于 2016-06-29T19:08:28.277 回答
2

我以为我对学说结果缓存发疯了——最后我不得不重新启动 memcached。

于 2017-06-02T11:39:03.157 回答
1

我知道这篇文章的标题是 Symfony 2,但对于那些来自谷歌的人来说,如果你有 Symfony 3+,它会是:

bin/console

相对于:

app/console
于 2018-09-07T13:59:47.090 回答
0

也许这有点晚了,但就我而言,学说并没有在生产中生成代理类,因为我将其更改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%"
于 2019-10-02T19:09:57.313 回答