【问题标题】:OPCache dealing with multiple apachesOPCache 处理多个 apache
【发布时间】:2019-10-04 23:54:25
【问题描述】:

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

【问题讨论】:

    标签: php apache opcache


    【解决方案1】:

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

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

    另外,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.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-04
      • 2020-03-01
      • 2019-01-09
      • 2013-10-17
      • 1970-01-01
      • 2013-10-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多