Мне нужно очистить кеш доктрины в Symfony 2.
В командной строке должен быть какой-то способ очистить кеш.
Или где мне найти и удалить файлы, принадлежащие кешу?
Мне нужно очистить кеш доктрины в Symfony 2.
В командной строке должен быть какой-то способ очистить кеш.
Или где мне найти и удалить файлы, принадлежащие кешу?
app/console
перечислит, как вы можете это сделать
app/console doctrine:cache:clear-metadata
app/console doctrine:cache:clear-query
app/console doctrine:cache:clear-result
для symfony 3+:
php bin/console
и список comand (для копирования/прошлого из каталога проекта):
php bin/console doctrine:cache:clear-metadata
php bin/console doctrine:cache:clear-query
php bin/console doctrine:cache:clear-result
Если вы хотите сделать это в своем коде (из документации Doctrine):
Если вы просто хотите удалить все записи кэша, вы можете сделать это с помощью метода deleteAll().
<?php $cacheDriver = new \Doctrine\Common\Cache\ArrayCache(); $deleted = $cacheDriver->deleteAll();
Если вы используете APC, вы также можете просто вызвать код
<?php
$deleted = apc_clear_cache() && apc_clear_cache('user');
на странице php на том же сервере. Это то, что делает метод deleteAll() в ответе Antho, но вы не зависите от классов Doctrine. Btw: полный кеш будет покраснеть - на всякий случай, если вы используете его для вещей без Doctrine.
Я думал, что с ума сошел с кэшированием результатов доктрины - в конце концов мне пришлось перезапустить memcached.
Я знаю, что название этого сообщения говорит о Symfony 2, но для тех из вас, кто пришел из Google, если у вас есть 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%"