7

エンティティの 1 つに列を追加して本番用にリリースすると、この問題が発生します。Doctrine メタデータの APC/APCU キャッシュをクリアするには、Apache を再起動する必要があります。

以下のすべてのコマンドを試しましたが、うまくいきませんでした:

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 share in the Web server memory and not accessible from the CLI.

Doctrine キャッシュを更新する唯一の方法は、Apache サーバーを再起動することですが、これが問題になることがあります。

Symfony プロジェクトでの Doctine のキャッシュ設定:

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 キャッシュをクリアするにはどうすればよいですか。ロード バランサーの背後に多数のサーバーがある場合、これはさらに悪化します。

4

4 に答える 4

2

コンソールからクリアしようとする代わりに、コントローラーまたは app.php から実行してみてください。

app.php で次の行にコメントを付けています。

//apcu_clear_cache ();

キャッシュをクリアする必要がある場合は、コメントを外して任意のページをロードします。わたしにはできる。

于 2016-10-11T18:49:50.280 に答える
0

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

これにより、次のように cli コマンドとしてキャッシュをフラッシュできます。

php app/console cache:accelerator:clear

ドキュメントには Capifony のレシピも含まれています。

この助けを願っています

于 2016-10-11T19:28:01.937 に答える