首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >暂时禁用OPCache

暂时禁用OPCache
EN

Stack Overflow用户
提问于 2014-02-04 15:24:49
回答 4查看 110.1K关注 0票数 49

我最近使用了PHP5.4并安装了OPCache,它非常强大!

如何暂时禁用缓存?

我试过:

代码语言:javascript
复制
 ini_set('opcache.enable', 0);

但它没有效果。

谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-02-04 15:49:30

一旦您的脚本运行,就太晚了,不能缓存该文件。您需要在PHP之外设置它:

  • 如果PHP作为Apache模块运行,请使用.htaccess文件: php_flag opcache.enable Off
  • 如果PHP以CGI/FastCGI的形式运行,请使用.user.ini文件: opcache.enable=0

在任何情况下,您也可以使用良好的旧系统范围的php.ini,如果您可以访问它。

票数 96
EN

Stack Overflow用户

发布于 2014-02-05 23:14:46

opcache.enablePHP_INI_ALL,这意味着ini_set()确实可以工作,但只对当前请求禁用当前请求中编译的其余脚本的OPcache缓存。(您不能强制启用)。对于其他请求,它将返回到系统默认设置。到了这个阶段,除非在ini_set脚本中执行文件,否则请求脚本将已经被缓存。

系统默认的(PHP_INI_SYSTEM)是作为PHP启动的一部分而锁定的,不能重新读取。因此,以Apache为例,您需要重新启动Apache来更改/重新加载这些文件。

.htaccess php_flag指令仅适用于运行mod_php或等效程序的情况。它们和.user.ini文件是PHP_INI_PERDIR文件,在请求激活时也会被锁存。

现在是Q,我认为你可能会问。如果您有一个dev系统,那么最简单的方法就是在适当的INI文件中设置opcache.enable=0并重新启动您的set服务器。将其设置为=1,并在完成后再次重新启动。

还可以考虑(在dev上下文中)设置opcache.validate_timestamps=onopcache.revalidate_freq=0。这将使OPcache保持启用状态,但脚本将在每个编译请求上进行统计,以查看它们是否被更改。在开发过程中,这给了这两个世界最好的一面。

还可以阅读opcache.blacklist_filename指令。这允许您指定一个排除文件,因此如果其中包含/var/www/test,并且web服务docroot是/var/www,那么/var/www/test*层次结构中的任何脚本都不会被缓存。

票数 26
EN

Stack Overflow用户

发布于 2019-05-22 12:02:53

在我的示例中,禁用特定PHP文件中的opcache的最佳方法是:opcache_invalidate(__FILE__, true);

您还可以使用PHP:opcache_reset();重置所有缓存。

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

https://stackoverflow.com/questions/21556437

复制
相关文章

相似问题

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