Opcache - 在PHP5.4及更低版本中清理缓存

sch*_*ing 6 php zend-optimizer php-5.4 opcache

没有办法使用 PHP5.4或更低版本的Opcache清理/重置缓存文件
这里opcache_reset()它只是似乎与PHP5.5的工作职能

解决方法是重新启动...

编辑:我在Github上打开了一个问题

Ter*_*ryE 11

zend_accelerator_module.c声明这两个文件API调用:opcache_reset()opcache_invalidate()以及两个无证者:opcache_get_status()opcache_get_configuration().从源头上看,他们所做的事情非常明显.

当您发出opcache_reset()它时,它显然只适用于连接到执行PHP脚本的进程的OPcache缓存.是的,你可以在系统上安装许多这样的缓存.

当您opcache.enable_cli=1处理php-cli请求时,OPcache将为连接到该进程的缓存发出重新启动请求; 不幸的是,cli SAPI创建了一个私有缓存,所以这并没有太大的好处.

在*nix系统上要理解的要点是,OPcache依赖于某些底层进程管理器(如Apache或FPM)来启动OPcache,从而导致它进入mmap()包含缓存的SMA.然后,进程管理器分叉处理请求的子进程,并偶然从父进程继承mmapped区域.

因此,如果要重置连接到PHP-FPM的OPcache缓存,则必须通过在PHP-FPM服务下运行的脚本运行此操作.这只需要一个4线.如果要从命令行执行此操作,则可以使用wget,curl或使用curl扩展的PHP CLI脚本来启动此FPM脚本.

但请记住在两者之间使用一些强大的身份验证机制来防止第三方利用.

如果你想了解更多,我已经完成了这个概述:Zend引擎和操作码缓存.如果您有任何反馈或Q,请在此处发表评论或在Github上提出问题.