我最近使用了PHP5.4并安装了OPCache,它非常强大!
如何暂时禁用缓存?
我试过:
ini_set('opcache.enable', 0);但它没有效果。
谢谢
发布于 2014-02-04 15:49:30
一旦您的脚本运行,就太晚了,不能缓存该文件。您需要在PHP之外设置它:
.htaccess文件:
php_flag opcache.enable Off.user.ini文件:
opcache.enable=0在任何情况下,您也可以使用良好的旧系统范围的php.ini,如果您可以访问它。
发布于 2014-02-05 23:14:46
opcache.enable是PHP_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=on和opcache.revalidate_freq=0。这将使OPcache保持启用状态,但脚本将在每个编译请求上进行统计,以查看它们是否被更改。在开发过程中,这给了这两个世界最好的一面。
还可以阅读opcache.blacklist_filename指令。这允许您指定一个排除文件,因此如果其中包含/var/www/test,并且web服务docroot是/var/www,那么/var/www/test*层次结构中的任何脚本都不会被缓存。
发布于 2019-05-22 12:02:53
在我的示例中,禁用特定PHP文件中的opcache的最佳方法是:opcache_invalidate(__FILE__, true);
您还可以使用PHP:opcache_reset();重置所有缓存。
https://stackoverflow.com/questions/21556437
复制相似问题