2016-10-27 3 views
3

Какая разница между ./bin/console cache:clear --env=prod и rm -rf var/cache/prod/*? Команда консоли очень медленная. Команда Bash работает быстро. Итак ... зачем использовать cache:clear вместо rm?Очистить кеш в Symfony: `cache: clear` или` rm -rf`?

+0

Вы будете читать везде, где лучше использовать 'php app/console blahblah',' php app/console make coffee', 'php app/console сделать мои мечты реальностью'. «Официальный» лучший подход должен быть следующим: 'php app/console doctrine: cache: clear-metadata && php app/console doctrine: cache: clear-query && php app/console doctrine: cache: clear-result'. Не верьте тому, что они говорят. У меня был apache как обратный прокси-сервер, затем у меня был лак, затем nginx, и я обновил все версии symfony с 2.3 до 3, и он никогда не работал нормально. Никогда. Фактическое и эффективное решение? В моем следующем комментарии –

+1

... Фактическое и эффективное решение? 'rm -rf ./app/cache/dev/*; rm -rf./app/cache/prod/* ', а затем перезагрузите свой веб-сервер, как бы то ни было, чтобы очистить кеш. Это единственный эффективный метод. Не самое лучшее, а не «следовать лучшим практикам, верьте в Санта-Клауса, верьте в совершенство», но тот, который работает. И я, наверное, догадываюсь, поэтому на стенах Facebook написано «лучше сделано, чем идеально». У меня есть кеш ясный и ** он работает **. Я серьезно устал от «единственного использования« php app/console ». И если вы находитесь под Windows, вы всегда окажетесь таким образом, верьте 4-летнему пользователю Symfony. –

+0

согласны с 'rm -rf', который отлично работает. Единственная проблема заключается в невозможности удалить какой-либо файл, который используется, который я решил, запустив команду более одного раза –

ответ

6

cache:clear Салфетки ранее создавали элементы кеша, но также, он делает разминку кеша. При этом приложение должно загружаться очень быстро из-за того, что кеш уже был предварительно заполнен.

С другой стороны, rm -rf выполняет только одну часть работы. Вы должны заметить влияние производительности, когда вы пытаетесь загрузить приложение в первый раз после этого.

Я также хотел бы указать еще одну вещь: разрешения. Например, если вы вошли в систему как root, и вы не установили права доступа через setfacl (или любым другим способом), cache:clear, скорее всего, создаст ваши элементы кэша, принадлежащие root. Это может быть проблемой, по линии.

Надеется, что это помогает немного ...

4

«Кэш: прозрачная» команда не только удаляет кэш, но они, как правило, строят обновленные данные кэша (разогреть), так что Symfony не нужен создавать один за первый запрос приходит, что является причиной того, что требуется больше времени, чем простое удаление файлов под вашей папкой кэша с помощью «rm -rf». Даже если вы можете быстрее завершить эту команду, вам потребуется время для обработки первого запроса, если вы не создали кеш заранее этой командой.

http://symfony.com/doc/current/console/usage.html

Таким образом, как правило, лучше работать кэш: ясно, по крайней мере, на протяжении всего процесса развертывания. Случай, когда вы будете использовать команду rm, обычно, только когда некоторые права доступа к файлам поступили неправильно (возможно, вы запустили команду с неправильным пользователем), и я не думаю, что выбор остался.