暂时禁用 OPCache
我最近迁移到PHP 5.4并安装了OPCache,它非常强大!
如何暂时禁用缓存?
我试过了:
ini_set('opcache.enable', 0);
但它没有任何效果。
谢谢
我最近迁移到PHP 5.4并安装了OPCache,它非常强大!
如何暂时禁用缓存?
我试过了:
ini_set('opcache.enable', 0);
但它没有任何效果。
谢谢
脚本运行后,不缓存文件为时已晚。您需要在 PHP 外部设置它:
如果 PHP 作为 Apache 模块运行,请使用一个文件:.htaccess
php_flag opcache.enable Off
如果 PHP 以 CGI/FastCGI 的形式运行,请使用一个文件:.user.ini
opcache.enable=0
在所有情况下,如果您有权访问它,您也可以在系统范围内使用良好的旧系统。php.ini
opcache.enable 是PHP_INI_ALL这意味着ini_set() 确实有效,但仅适用于当前请求,以便为当前请求中编译的其余脚本禁用 OPcache 缓存。(您无法强制启用)。对于其他请求,它将恢复为系统默认值。到此阶段,请求脚本将已缓存,除非您在auto_prepend_file脚本中执行ini_set。
系统默认值(PHP_INI_SYSTEM)作为 PHP 系统启动的一部分锁定,无法重读。因此,在Apache的情况下,您需要重新启动Apache来更改/重新加载这些。
这些指令仅在运行mod_php或等效项时才适用。它们和文件PHP_INI_PERDIR,也会在请求激活时锁定。.htaccess
php_flag
.user.ini
现在来问问,我想你可能会问。如果你有一个开发系统,那么最简单的方法是设置适当的INI文件并重新启动你的Web服务器。将其设置回,完成后再次重新启动。opcache.enable=0
=1
还要考虑(在开发上下文中)设置 和 。这将使OPcache保持启用状态,但脚本将在每个编译请求上进行统计,以查看它们是否被更改。这在开发时提供了两全其美的优势。opcache.validate_timestamps=on
opcache.revalidate_freq=0
另请阅读该指令。这允许您指定一个排除文件,因此,如果其中包含 ,并且 Web 服务 docroot 是,则不会缓存层次结构中的任何脚本。opcache.blacklist_filename
/var/www/test
/var/www
/var/www/test*