互联网上有很多讨论认为在 CLI 中调用 apc_cache_clear()
不会从“web”PHP 进程中清除操作码缓存,无论它们是在 Apache 中运行还是由 FPM 运行(参见 How to clear APC cache entries?) .作为建议的解决方案,可以创建一个调用 apc_cache_clear()
的简单 PHP 页面,并从 CLI 调用它。 Symfony's ApcBundle这样做。
如果来自 CLI 的 apc_cache_clear()
没有清空 Apache/FPM 的缓存,它是否在 FPM worker 之间清空?如果我通过 HTTP 调用/clear_apc_cache.php,它仅由 FPM 工作进程之一运行。那么,APC 操作码缓存是否真的在池和工作人员之间共享 - 更具体地说:它是否自动从所有工作人员中清除?
最佳答案
所有 php-fpm worker 与父 php-fpm 进程共享相同的操作码缓存; source .如果您有一个/apc_clear_cache.php 文件并通过 HTTP 调用它(使用类似 curl 的东西),您将清除所有使用相同 php-fpm 主进程的工作人员的操作码缓存。
这个 blog article对 apc 的工作原理以及如何在发布期间有效地清除它有很好的解释。
关于apc - APC 操作码缓存是否在 PHP-FPM 池/ worker 之间共享?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12860487/