2017-11-27 27 views
2

私はsymfonyアプリケーションのパフォーマンスを最適化しようとしていると私はこれらの記事を追っ:symfonyのとDoctrineのメタデータキャッシュ

私はこれらの行について "心配" しています:

doctrine: 
    orm: 
     entity_managers: 
      default: 
       metadata_cache_driver: apc 
       query_cache_driver: apc 
       result_cache_driver: apc 

Are they safeを使用するか、配備後に注意して処理する必要がありますか? php app/console cache:clear --env=prod --no-debugでキャッシュをクリアしていますが、APCキャッシュもクリアする必要がありますか?

答えて

2

一般的に、展開後にAPCキャッシュをクリアする必要があります。しかし、それはあなたの最後の展開以来あなたが変更したものに依存します。

cache:clearは、Doctrineキャッシュをクリアしません。それだけで、あなたのキャッシュディレクトリ(symfonyの3+、2.8用app/cachevar/cache/{env})をクリアします:FrameworkBundle/Command/CacheClearCommand.php

何か(例えば、あなたのエンティティが)最後のデプロイメント後に変更されたのであれば、あなたが展開した後にキャッシュをクリアする必要があります。あなたは申し訳ありませんより良い安全なを希望する場合

bin/console doctrine:cache:clear-query --env=prod 
bin/console doctrine:cache:clear-result --env=prod 
bin/console doctrine:cache:clear-metadata --env=prod 

をか自動的に展開すれば、それらのすべてを実行します。

手動で展開する場合は、該当する場合、これらのコマンドを実行します。

残念ながら、CLIを使用してAPCキャッシュをクリアすることはできません。 this answerまたはthis questionを参照してください。代わりに、restart your webserverとすることもできます。

+0

私はSymfony 2.8を使用しています。キャッシュディレクトリはアプリ内にありますが、それは同じですか?私はsymfonyアプリケーションをデプロイするためにデプロイヤーを使用していますが、Doctrineキャッシュを破棄しているようではありません。https://github.com/deployphp/deployer/blob/master/recipe/symfony.php – StockBreak

+0

私の答えが更新されました。 symfony 3.0の前に 'app/cache'が使われました。デプロイヤーがあなたのDoctrineキャッシュをクリアしないのが分かります。背景情報については、[この号(https://github.com/deployphp/deployer/issues/444)]を参照してください。 –

+0

ありがとう!最後の2つの質問:1) '--flush'パラメータを指定する必要がありますか? 2)あなたがリンクしている投稿にコメントがあります:「apcを使用している場合、コマンドを使用してキャッシュを削除できません」とはどういう意味ですか? – StockBreak

関連する問題