php - OPCache 处理多个 apache
问题描述
在我的应用程序中,我使用多个具有负载平衡的 Apache。我假装开始使用 OPCache 来opcache.validate_timestamps = off
提高性能,但我的怀疑/担忧是关于缓存重置。当我更改文件时,是否有必要在每个 Apache 中重置 OPCache?
解决方案
当您重新启动 PHP 模块/守护程序时(例如,为 mod_php 重新启动 Apache 或重新启动 PHP-FPM 等),OPCache 会被清除。
您可以通过从 php 脚本调用手动重置 opcache opcache_reset()
,但是,这需要在 Apache/PHP-FPM 中执行;您不能从命令行执行此操作。一种方法是配置一个只能从服务器本身或受信任的静态 IP(例如<directory "dir">Require local</directory>
)访问的受限目录,并将 php 文件放在那里——或使用类似的文件限制——然后使用来自服务器或 curl 通过 ssh/cmd(无头)调用脚本来重置缓存而不重新启动。
或者 PHP 提供了 command 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
推荐阅读
- node.js - 需要“直到循环”模拟 - 为了继续机器人对话 - 在某些状态“标记”更新后
- windows - 实时扫描和比较图像的最佳方式
- suitescript2.0 - 如何通过@NAmdConfig 为客户端脚本使用相对模块路径?套件脚本 2.0
- java - 同步问题。应用程序只是冻结
- intersystems-cache - 系统间缓存是否有通配符来搜索全局节点?
- common-lisp - 在 ASDF 的测试操作调用中重新编译组件
- php - 如何在自定义 WordPress 主题中包含博客页面?
- objective-c - 如何在 Swift 中访问目标 c 类扩展
- unity3d - Unity 命令行 -- executeMethod 和 logFile 不起作用?
- javascript - 如何在使用 CSS 的数字输入中默认显示步长条