我们有一个PHP web应用程序,我们正在部署到使用Capistrano运行CentOS 5.5的LAMP服务器。 Capistrano使用符号链接pipe理切换到最新版本(和回滚),所以我们的文档根目录必须指向符号链接。
不幸的是,我们已经看到,对PHP应用程序的web请求仍然指向符号链接更新之后的60秒的文档根目录的符号链接。
PHPconfiguration中的唯一设置我可以find可能与此有关的是realpath_cache_ttl设置,但是这被设置为120秒。 我在apache的configuration中找不到任何东西。
我们没有使用APC。
我甚至看在正确的地方?
符号链接由Apachecaching,我假设你在httpd.conf中使用FollowSymLinks。 您可以尝试使用调用lstat的SymLinksIfOwnerMatch不cachinghttp://httpd.apache.org/docs/2.0/misc/perf-tuning.html#symlinks
Apache不会caching符号链接,但它会caching文件的位置,如果你使用APC,它会真的做一些caching。 我也看到了这一点,但用于部署的织物。 解决方法是在更改符号链接后执行apache restart / reload / graceful。
先尝试优雅,然后重新加载,然后重新启动,如果一切都失败了
Apache不会caching符号链接(它会是非常愚蠢的尝试;文件系统caching知道更多关于正在发生的事情,而且会非常接近)。 我会把整个社会搞得更清楚什么时候做什么。