2011-08-09 4 views
13

アプリケーションの構成を変更し、新しいコードを運用サーバーに展開しました。アプリケーションは構成ファイルを解析せず、プリコンパイルされたクラスを使用するので、キャッシュファイルを更新する必要がありました。Symfony2アプリケーションのプロダクションでキャッシュを正しく無効にするには?

app/console cache:warmupapp/console cache:clearコマンドがあります。しかし、これらのコマンドを呼び出した後にキャッシュが更新されなかったので、手動でapp/cacheフォルダを削除する必要がありました。

アトミックではないため、手動での削除は非常に危険です。リクエスト中にキャッシュの一部を削除することができます。これにより致命的なエラーが発生する可能性があります。

キャッシュを再ロードするにはどうすればよいですか?

+1

何が悪いですか手動による削除? – Gigala

+0

高負荷をかけていない場合は、手動で削除しても問題ありません。キャッシュフォルダとログフォルダのアクセス権のみが無効になる可能性があります。 – lisachenko

答えて

23

を試すことができると信じて:私の修正は

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

このコマンドを使用してデバッグをオフにしているキャッシュをクリアして瞬時にデータにアクセスするにはapp/console cache:clear --env=prod --no-debug

+1

ありがとう! --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 '); $ debug = getenv( 'SYMFONY_DEBUG')!== '0' &&!$ input-> hasParameterOption(array( ' - no-debug'、 ''))&& $ env!== 'prod'; 'https ://github.com/symfony/symfony-standard/blob/master/app/console – fyrye

1

私はあなたがあなたがenvパラメータ逃し app/console cache:clear --no-warmup

+0

ありがとうございますが、私は高負荷ではキャッシュを強制終了するのは良い考えではないことは疑いがあります。私は構成のために優雅なリロードが必要です。 – lisachenko

+0

私はそれを 'app/console cache:clear'で追跡できると信じています。 – Ascherer

0

を、データに再びアクセスできるようになるまでウォーミングアップ時間がありません

+1

'--no-warmup'フラグは' cache:clear'が完了した後に新しい環境ベースのキャッシュが生成されないようにします。遅延(キャッシュ生成)は、アプリケーションが最初に実行されたときに発生します。 – fyrye

関連する問題