Подтвердить что ты не робот

Учет доктрины Symfony2

Мне нужно очистить кеш доктрины в Symfony 2.

В командной строке должен быть какой-то способ очистить кеш.

Или где мне найти и удалить файлы, принадлежащие кешу?

4b9b3361

Ответ 1

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

Ответ 2

Если вы хотите сделать это в своем коде (из документации Doctrine):

Если вы просто хотите удалить все записи кэша, вы можете сделать это с помощью метода deleteAll().

    <?php
    $cacheDriver = new \Doctrine\Common\Cache\ArrayCache();
    $deleted = $cacheDriver->deleteAll();

Ответ 3

Если вы используете APC, вы также можете просто вызвать код

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

на странице php на том же сервере. Это то, что делает метод deleteAll() в ответе Antho, но вы не зависите от классов Doctrine. Btw: полный кеш будет покраснеть - на всякий случай, если вы используете его для вещей без Doctrine.

Ответ 4

Я думал, что с ума сошел с кэшированием результатов доктрины - в конце концов мне пришлось перезапустить memcached.

Ответ 5

Я знаю, что название этого сообщения говорит о Symfony 2, но для тех из вас, кто пришел из Google, если у вас есть Symfony 3+, это будет:

bin/console

В отличие от:

app/console

Ответ 6

Может быть, немного поздно для этого, но в моем случае доктрина не генерировала прокси-классы в производстве, для этого я изменяю 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%"