可以检测相同文件的PHP Opcode缓存

可以检测相同文件的PHP Opcode缓存

我目前正在使用 APC 和 PHP FPM 来缓存几百个 Wordpress 网站。使用 2GB 缓存一切运行良好,但效率不高,缓存总是满的。

举个例子,如果我在同一个服务器上有 200 个 Wordpress 网站,并且所有网站都有相同的版本,那么它将缓存 200 个相同的 wp-db.php 文件。

我似乎记得几年前有人讨论过它可能存在安全风险。我怀疑这不再是一个问题(尤其是对于 PHP FPM 而言),但无论如何我控制着所有网站,因此好处大于坏处。

近年来这种情况有变化吗?特别是有了新的默认 Zend Opcache?像符号链接这样的黑客手段并不理想,例如,您无法一次性升级 500 个网站,因此它会不时出现严重故障。

答案1

这是一个部分回应,因为我没有在使用 zend opcode 时遇到过这种情况。

上次我使用 apc 时,我发现这个功能是个 bug,我以前从来没觉得它是个功能 :-)。如果您将chroot-ed 池与 php-fpm 一起使用,并且如果所有池在 chroot 中都具有相同的相对路径,那么它们将在 apc 中共享相同的缓存键。因为键是完整的绝对文件路径,而在 chroot 中,此文件路径不能包含部分chroot。

因此你可以尝试使用 chroot。但这需要一些技巧:

  • chroot 应该包含 php 可能需要的所有元素(临时目录、/etc/hosts、一些设备)
  • php mail 无法工作,应在 smtp 模式下使用
  • 一些文件应该从缓存中排除,所有包含设置的文件,如果您忘记这一点,网站就会混乱!
  • 也许还有其他人,chroot从来都不是简单的

相关内容