我更改了應用程序的配置並將新代碼部署到生產服務器。由於應用程序不解析配置文件並使用預編譯類,因此我需要更新緩存文件。如何正確地使Symfony2應用程序的生產緩存失效?
有app/console cache:warmup
和app/console cache:clear
命令。但是在調用這些命令後緩存沒有更新,所以我不得不手動刪除應用程序/緩存文件夾。
手動刪除操作非常危險,因爲它不是原子的,所以我可以在請求期間刪除部分緩存,這可能會導致致命錯誤。
我應該如何重新加載緩存?
我更改了應用程序的配置並將新代碼部署到生產服務器。由於應用程序不解析配置文件並使用預編譯類,因此我需要更新緩存文件。如何正確地使Symfony2應用程序的生產緩存失效?
有app/console cache:warmup
和app/console cache:clear
命令。但是在調用這些命令後緩存沒有更新,所以我不得不手動刪除應用程序/緩存文件夾。
手動刪除操作非常危險,因爲它不是原子的,所以我可以在請求期間刪除部分緩存,這可能會導致致命錯誤。
我應該如何重新加載緩存?
你錯過了env
參數:app/console cache:clear --env=prod --no-debug
謝謝!接受你的答案:app/console cache:clear --env = prod --no-debug – lisachenko
由於2.1 app/console沒有提供'--env'標誌,它會默認爲'getenv('SYMFONY_ENV' )'或'dev'。另外,如果提供了'--env = prod',它會強制執行'--no-debug' 2.1之前需要顯式傳遞'--no-debug' $ env = $ input-> getParameterOption(array(' 'env','-e'),getenv('SYMFONY_ENV')?:'dev'); (' - 不調試',''))&& $ env!=='prod';'https ://github.com/symfony/symfony-standard/blob/master/app/console – fyrye
我相信你可以試試 app/console cache:clear --no-warmup
謝謝,但我懷疑對於高負載來說,殺死緩存並不是一個好主意。我只需要優雅地重新加載配置。 – lisachenko
我相信你可以用'app/console cache:clear'來跟上這一點' – Ascherer
要清除高速緩存,並立即訪問數據我修復程序使用此命令
sudo app/console cache:clear --env=prod --no-warmup --no-debug
關閉調試,並且在數據再次可訪問之前沒有預熱時間
請記住'--no-warmup'標誌防止在'cache:clear'完成後生成新的基於環境的緩存。當應用程序第一次運行時,會發生延遲(緩存生成)。 – fyrye
什麼是如此糟糕abou t手動刪除? – Gigala
如果你沒有加載,手動刪除沒有什麼不好。只有緩存和日誌文件夾的權限纔可能失效。 – lisachenko