2016-10-11 16 views
3

私のエンティティの1つにカラムを追加し、プロダクション用にリリースすると、この問題が発生します。DoctrineメタデータAPC/APCUキャッシュをクリアするには、Apacheを再起動する必要があります。プロダクションのためにDoctrine APCキャッシュをクリアするには?

私は下のすべてのコマンドを試してみましたが、どれも私のために働いていない:

php -r "apc_clear_cache();" 
php -r "apcu_clear_cache();" 

sudo php app/console doctrine:cache:clear-metadata 
sudo php app/console doctrine:cache:clear-query 
sudo php app/console doctrine:cache:clear-result 

私はそれが教義をリフレッシュするために取得することができます--env = prodの

sudo php app/console doctrine:cache:clear-metadata --env=prod 
sudo php app/console doctrine:cache:clear-query --env=prod 
sudo php app/console doctrine:cache:clear-result --env=prod 

[LogicException] 
    Cannot clear APC Cache from Console, its shared in the Webserver memory and not accessible from the CLI. 

唯一の方法については、このエラーメッセージが表示されますキャッシュはいつか問題となるかもしれない私のapacheサーバを再起動することです。

doctrine: 
    orm: 
     metadata_cache_driver: apc 
     result_cache_driver: apc 
     query_cache_driver: apc 
     second_level_cache: 
      enabled: true 
      log_enabled: false 
      region_cache_driver: apc 

私は、Apache私は、生産に新しいスキーマのアップデートをリリースするたびに再起動せずに、この場合、APCキャッシュをクリアするにはどうすればよい:私のsymfonyプロジェクトでDoctineため

私のキャッシュ設定。ロードバランサの背後に多数のサーバーがある場合、これはさらに悪化します。

答えて

0

コンソールからクリアするのではなく、コントローラまたはapp.phpから実行してみてください。

私はこのラインを持っているがapp.phpにコメント:

//apcu_clear_cache(); 

私はちょうどそれをコメント解除、キャッシュをクリアする必要があり、任意のページをロードしないとき。わたしにはできる。

0

をご覧ください。Smart-Core/AcceleratorCacheBundle CLIからPHPアクセラレータキャッシュをクリアするコマンドを提供します。

php app/console cache:accelerator:clear 

ドキュメントもCapifonyのレシピが含まれる:

これは、CLIコマンドとしてキャッシュをフラッシュすることを許可することができます。

ホープ、このヘルプ

+1

私はこのために別のバンドルを使いたくないのが望ましいです。 – PMoubed

0

あなたがapc_clear_cacheを実行します(); cliからではなく、あなたのアプリから、教義キャッシュがクリアされます。あなたはそのPHPを理解しなければならないautorize要求とクリアキャッシュ

+0

サーバーが100台あればどうですか? – PMoubed

0

http://example.com/apc_cache_clear.php:あなたは、管理パネルにいくつかのボタンを作る、あるいは、例えば、指定したファイルにそれぞれ更新した後、サーバーにカールリクエストを送信することができますApache(またはNginx)の下で実行されているコマンドラインを介して実行されているPHPとは異なり、彼らは通信できない2 Linuxプロセスです。

したがって、CLI経由でキャッシュをクリアできても、これはApacheの下のphpには影響しません。

symfonyコントローラ内でapcu_clear_cacheを呼び出す最も簡単な方法は、CLI経由でApache Phpソケットを使用することです。

私はそれを完全に行うhttp://gordalina.github.io/cachetool/のようなツールを使うことをお勧めします。

関連する問題