Apache/PHP 似乎将符号链接缓存了 60 秒 - 如何停止它,或者发现真正缓存符号链接的内容并停止它?

Sha*_*obe 7 php capistrano apache-2.2

我们有一个 PHP Web 应用程序,我们正在使用 Capistrano 部署到运行 CentOS 5.5 的 LAMP 服务器。Capistrano 使用符号链接管理切换到最新版本(并回滚),因此我们的文档根目录必须指向该符号链接。

不幸的是,我们已经看到,在符号链接更新后的整整 60 秒内,对 PHP 应用程序的 Web 请求仍然指向文档根目录符号链接的先前目标。

我能找到的 PHP 配置中唯一可能与此相关的realpath_cache_ttl设置是设置,但是它被设置为 120 秒。我在 apache 的配置中找不到任何东西。

我们没有使用 APC。

我什至找对地方了吗?

Och*_*oto 11

符号链接由 Apache 缓存,我假设您在 httpd.conf 中使用 FollowSymLinks。您可以尝试使用 SymLinksIfOwnerMatch,其对 lstat 的调用未缓存 http://httpd.apache.org/docs/2.0/misc/perf-tuning.html#symlinks

  • 你能链接到一些说 Apache/httpd 缓存 lstat 调用的内容吗? (2认同)

wom*_*ble 0

Apache 不缓存符号链接(尝试起来会非常愚蠢;文件系统缓存知道更多关于正在发生的事情,并且会非常接近)。我想strace了解整个过程,以便更好地了解何时做什么。

  • 问题归问题,而不是评论。但实际上,“man strace”并不难。 (2认同)
  • 如果你没有 root,无论如何你都无法正确诊断问题,所以将其交给系统管理员来处理。但是,您不需要 root 来安装软件。 (2认同)