2011-08-09 124 views
13

我更改了應用程序的配置並將新代碼部署到生產服務器。由於應用程序不解析配置文件並使用預編譯類,因此我需要更新緩存文件。如何正確地使Symfony2應用程序的生產緩存失效?

app/console cache:warmupapp/console cache:clear命令。但是在調用這些命令後緩存沒有更新,所以我不得不手動刪除應用程序/緩存文件夾。

手動刪除操作非常危險,因爲它不是原子的,所以我可以在請求期間刪除部分緩存,這可能會導致致命錯誤。

我應該如何重新加載緩存?

+1

什麼是如此糟糕abou t手動刪除? – Gigala

+0

如果你沒有加載,手動刪除沒有什麼不好。只有緩存和日誌文件夾的權限纔可能失效。 – lisachenko

回答

23

你錯過了env參數:app/console cache:clear --env=prod --no-debug

+1

謝謝!接受你的答案:app/console cache:clear --env = prod --no-debug – lisachenko

+1

由於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

1

我相信你可以試試 app/console cache:clear --no-warmup

+0

謝謝,但我懷疑對於高負載來說,殺死緩存並不是一個好主意。我只需要優雅地重新加載配置。 – lisachenko

+0

我相信你可以用'app/console cache:clear'來跟上這一點' – Ascherer

0

要清除高速緩存,並立即訪問數據我修復程序使用此命令

sudo app/console cache:clear --env=prod --no-warmup --no-debug 

關閉調試,並且在數據再次可訪問之前沒有預熱時間

+1

請記住'--no-warmup'標誌防止在'cache:clear'完成後生成新的基於環境的緩存。當應用程序第一次運行時,會發生延遲(緩存生成)。 – fyrye

相關問題