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