首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Opcache - PHP5.4及更低版本中的清洁缓存

Opcache - PHP5.4及更低版本中的清洁缓存
EN

Stack Overflow用户
提问于 2013-07-18 06:59:35
回答 3查看 13.6K关注 0票数 6

是否有使用PHP5.4或更低版本的Opcache来清理/重置缓存文件?

这里opcache_reset()函数,它似乎与PHP5.5一起工作

解决办法是重新启动..。

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-07-19 18:23:10

module.c声明了两个有文档的API调用:opcache_reset()opcache_invalidate(),以及两个无文档的调用:opcache_get_status()opcache_get_configuration()。从源头上看,他们所做的是相当明显的。

当您发出opcache_reset()时,它显然只应用于OPcache缓存,该缓存连接到正在执行PHP的进程。是的,您可以在系统中有许多这样的缓存。

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

在*nix系统上需要理解的主要一点是,OPcache依赖于一些底层的进程管理器,比如Apache或FPM来启动OPcache,从而导致它对包含缓存的SMA进行mmap()。然后,流程管理器对子进程进行分叉,该子进程为请求提供服务,并顺便从父进程继承from区域。

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

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

如果您想了解更多,我已经做了以下概述:Zend引擎和操作码缓存。如果您有任何反馈或Qs,那么在这里评论或提出一个问题在Github。

票数 11
EN

Stack Overflow用户

发布于 2013-07-18 11:50:08

查看您的环境中的存在是否可以使用该方法。

代码语言:javascript
复制
if( function_exists('opcache_reset') ) echo 'yay!';

当它在php 5.5中可用时,因为它附带了opcache,如果您已经将OpCache安装到了一个旧版本的php中,那么它也会变得可用。我相信,当文档中写着PHP时,这就是它所注意到的。

我还成功地在PHP5.4中使用了这个快速和脏的控制面板 (使用opcache_*方法)。

编辑在查看了上面的链接控制面板之后,我注意到它检查了PHP,以及是否存在opcache_reset。

它似乎尝试了*而不是opcache_*函数。

我建议尝试一下这个脚本,看看它是否适用于您,然后我们可以向后工作,看看您的服务器上安装了什么,以及使用了什么方法。

票数 0
EN

Stack Overflow用户

发布于 2015-05-03 23:27:14

如果服务器上有WordPress站点,只需安装插件OPcache仪表板即可。它为您提供交互式控制,并在自动Wordpress升级进程运行后触发缓存重置。

关于运行同一CMS的多个实例的服务器,需要注意的另一件事是,如果服务器运行不同版本的CMS或插件,会发生什么情况。这将发生,例如,如果您错开升级的主要版本。在这种情况下,您的PHP.ini需要包括

代码语言:javascript
复制
opcache.use_cwd=1

因此,根据所在目录的不同,将分别编译相同的文件名。如果您确信所有站点的CMS版本是相同的,则可以将其设置为0并获得效率提高,因为OpCache将编译每个例程一次,然后为服务器上的所有CMS实例提供服务。这也是一个内存效率提高,如果您有大量的实例在您的WP场将是相当重要的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17716639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档