Capistranoを使用してCentOS5.5を実行しているLAMPサーバーにデプロイしているPHP Webアプリケーションがあります。Capistranoはシンボリックリンクを使用して最新バージョンへの切り替え(およびロールバック)を管理するため、ドキュメントルートはそのシンボリックリンクを指します。
残念ながら、PHPアプリケーションへのWebリクエストは、シンボリックリンクが更新されてからちょうど60秒間、ドキュメントルートのシンボリックリンクの前のターゲットを指していることがわかりました。
PHP構成で、これに関連している可能性があるとわかった唯一の設定は、realpath_cache_ttl
設定、ただしこれは120秒に設定されています。 Apacheの構成には何も見つかりませんでした。
APCは使用していません。
私も正しい場所を探していますか?
シンボリックリンクはApacheによってキャッシュされます。httpd.confでFollowSymLinksを使用していると思います。 lstatへの呼び出しがキャッシュされていないSymLinksIfOwnerMatchを使用してみることができます http://httpd.Apache.org/docs/2.0/misc/perf-tuning.html#symlinks
Apacheはシンボリックリンクをキャッシュしませんが、ファイルの場所を少しキャッシュします。APCを使用すると、実際にキャッシュが実行されます。私もこれを見ましたが、デプロイにはファブリックを使用しました。回避策は、変更後のシンボリックリンクの後、Apacheの再起動/リロード/グレースフルを実行することでした。
最初にグレースフルを試してから、リロードしてから、他のすべてが失敗した場合は再起動してください
Apacheはシンボリックリンクをキャッシュしません(試してみるのは信じられないほど愚かです。ファイルシステムキャッシュは何が起こっているかについてより多くを知っており、非常に高速に近いでしょう)。何がいつ何をしているのかをよりよく理解するために、シバン全体をstrace
したいと思います。