OPCache处理多个修补程序

时间:2019-05-17 16:02:24

标签: php apache opcache

在我的应用程序中,我使用多个具有负载平衡的Apache。我假装开始使用带有opcache.validate_timestamps = off的OPCache来提高性能,但是我的疑问/担忧是有关缓存重置的。当我更改文件时,是否需要在每个Apache中重置OPCache?

1 个答案:

答案 0 :(得分:0)

当您重新启动PHP模块/守护程序(例如,重新启动Apache以获取mod_php或重新启动PHP-FPM等)时,OPCache被清除。

您可以通过从php脚本调用opcache_reset()来手动重置操作缓存,但是,这需要在Apache / PHP-FPM中执行;您无法从命令行执行此操作。一种方法是配置只能从服务器本身或受信任的静态IP(例如<directory "dir">Require local</directory>)访问的受限目录,并将php文件放置在此处-或使用类似的文件限制-然后使用服务器上的浏览器或通过ssh / cmd(无头)卷曲来调用脚本以重置缓存,而无需重新启动。

或者,PHP提供了命令opcache_invalidate(),但这有可能导致问题(更多有关opcache潜在问题的信息)。如果您的部署使用脚本编写,则可以使更改后的各个文件无效。

validate_timestamps不一定“固有地”不好,但是对于生产服务器(您很少推送更新,并且可能已经在重新启动apache / php-fpm)可能有点过头。

https://www.php.net/manual/en/function.opcache-reset.php

https://www.php.net/manual/en/function.opcache-invalidate.php

Older blog post that describes some of the potential issues, can't guarantee it is still accurate.