我最近搬到PHP 5.4并安装了OPCache,它功能非常强大!
如何暂时禁用缓存?
我试过了 :
ini_set('opcache.enable', 0);
Run Code Online (Sandbox Code Playgroud)
但它没有效果.
谢谢
Álv*_*lez 77
脚本运行后,不缓存文件为时已晚.你需要在PHP之外设置它:
如果PHP作为Apache模块运行,请使用以下.htaccess文件:
php_flag opcache.enable Off
Run Code Online (Sandbox Code Playgroud)如果PHP以CGI/FastCGI身份运行,请使用以下.user.ini文件:
opcache.enable=0
Run Code Online (Sandbox Code Playgroud)而且,无论如何,php.ini如果您有权访问它,您可以在系统范围内使用旧的.
Ter*_*ryE 22
opcache.enable是PHP_INI_ALL,这意味着ini_set()确实有效,但仅适用于当前请求,以禁用当前请求中编译的其余脚本的OPcache缓存.(你不能强制启用).它将恢复为其他请求的系统默认值.在此阶段,除非您在auto_prepend_file脚本中执行ini_set,否则请求脚本已经被缓存.
系统默认值(PHP_INI_SYSTEM)作为PHP系统启动的一部分被锁存,无法重新读取.因此,例如在Apache的情况下,您需要重新启动Apache来更改/重新加载这些.
.htaccess php_flag指令仅适用于运行mod_php或等效的 指令.它们和.user.ini文件是PHP_INI_PERDIR,它们也会在请求激活时被锁存.
现在到Q,我认为你可能会问.如果您有一个开发系统,那么最简单的方法是opcache.enable=0在相应的INI文件中设置并重新启动您的网络服务器.完成后将其重新设置=1并重新启动.
还要考虑(在开发上下文中)设置opcache.validate_timestamps=on和opcache.revalidate_freq=0.这将保持启用OPcache,但脚本将在每个编译请求上进行统计,以查看它们是否已更改.这在开发时提供了两全其美的优势.
另请阅读该opcache.blacklist_filename指令.这允许您指定排除文件,因此如果包含/var/www/test,并且Web服务docroot是,/var/www则层次结构中的任何脚本/var/www/test*都不会被缓存.
希望这可以帮助 :)
在我的案例中,我发现在特定 PHP 文件中禁用 opcache 的最佳方法是: opcache_invalidate(__FILE__, true);
您还可以使用 PHP 重置所有缓存: opcache_reset();
| 归档时间: |
|
| 查看次数: |
80476 次 |
| 最近记录: |