有没有办法使用
PHP5.4或更低版本的Opcache清理/重置缓存文件?
Here是opcache_reset()函数,它似乎与PHP5.5一起使用
Here是opcache_reset()函数,它似乎与PHP5.5一起使用
解决方法是重新启动…
编辑:我在Github上开了一个issue
zend_accelerator_module.c声明了两个记录的API调用:opcache_reset()和opcache_invalidate()以及两个未记录的API调用:opcache_get_status()和opcache_get_configuration().从源头上看,他们所做的事情非常明显.
当您发出opcache_reset()时,它显然只适用于连接到执行PHP脚本的进程的OPcache缓存.是的,你可以在系统上安装许多这样的缓存.
当你在PHP-cli请求上opcache.enable_cli = 1时,OPcache会为连接到该进程的缓存发出重启请求;不幸的是,cli SAPI创建了一个私有缓存,所以这并没有太大的好处.
在* nix系统上理解的要点是OPcache依赖于某些底层进程管理器(如Apache或FPM)来启动OPcache,从而使其mmap()包含缓存的SMA.然后,进程管理器分叉处理请求的子进程,并偶然从父进程继承mmapped区域.
因此,如果要重置连接到PHP-FPM的OPcache缓存,则必须通过在PHP-FPM服务下运行的脚本运行此操作.这只需要一个4线.如果要从命令行执行此操作,则可以使用wget,curl或使用curl扩展的PHP CLI脚本来启动此FPM脚本.
但请记住在两者之间使用一些强大的身份验证机制来防止第三方利用.
如果你想了解更多,我已经完成了这个概述:The Zend Engine and opcode caching.如果你有任何反馈或Qs,那么在这里发表评论或在Github提出一个问题.