我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

为了加速php代码的执行速度,大家一般都开启了php的opcache加速。但是,一旦开启了这个opcache加速,就会有个副作用。那就是,你调试代码时,修改了一段代码,你急切地盼望看到效果时,但是服务器端就是不变化。死活都不变化,你无助地开始怀疑人生..... 苏南大叔的这个应用场景描述地还不错吧。就是这种无助和无奈。本文中,苏南大叔来教大家如何应对这种情况。

苏南大叔:php调试没有效果怎么办?关闭opcache不使用系统缓存 - php-opcache
php调试没有效果怎么办?关闭opcache不使用系统缓存(图7-1)

本文测试环境:centosphp@72

需求描述

对于phpopcache,如果我们的网站不是在调试状态下面的话,这个opcache还是挺有用的。毕竟可以加速网站的浏览速度,这事对于谁都是件好事。然而,调试的时候,这个就是不可接受的事情了。而一般要关闭这个opcache需要修改php.ini文件,而且要重启php-fpm,而且影响是全局的,没有被调试的网站,也会失去opcache的加速效果。这显然也不是我们希望看到的。

下图演示:可以通过宝塔面板,快速添加php72opcache支持。

苏南大叔:php调试没有效果怎么办?关闭opcache不使用系统缓存 - php72opcache
php调试没有效果怎么办?关闭opcache不使用系统缓存(图7-2)

临时解决方案

苏南大叔在这里利用以前学习过的一个知识点,来临时关闭当前调试的网站的opcache,这样就不会影响其他站点了。

过程非常简单,在被调试的网站根目录下面添加个.user.ini就可以了。记得里面放置如下配置内容。

opcache.enable=0;

苏南大叔:php调试没有效果怎么办?关闭opcache不使用系统缓存 - opcache_ini
php调试没有效果怎么办?关闭opcache不使用系统缓存(图7-3)

永久解决方案

当然,对于本地的php调试环境来说,苏南大叔强烈建议大家永久关闭opcache。默认情况下,phpopcache扩展,是默认开启的。关闭的方式就是:找到php.ini中的opcache.enable。然后取消注释,然后修改其值为0即可。

opcache.enable=0;

苏南大叔:php调试没有效果怎么办?关闭opcache不使用系统缓存 - php-ini-opcache
php调试没有效果怎么办?关闭opcache不使用系统缓存(图7-4)

如果您找不到您系统里面的php.ini文件,那么,您可以参考下面这篇文章:

修改保存之后,重启php生效。如果您的系统是mac,您可能需要如下命令:

brew services restart php

另外,指的注意的是:opache的具体配置信息,可能是在附加的.ini文件中,并不在默认的php.ini文件中。所以,如果您看到没有效果的话,这也许是个可行的思路。比如,在苏南大叔的系统中,存在着下面一个文件路径。

/usr/local/etc/php/7.2/conf.d/ext-opcache.ini

苏南大叔:php调试没有效果怎么办?关闭opcache不使用系统缓存 - opcache_ext_ini
php调试没有效果怎么办?关闭opcache不使用系统缓存(图7-5)

效果对比

修改前后对比图:

苏南大叔:php调试没有效果怎么办?关闭opcache不使用系统缓存 - opcache
php调试没有效果怎么办?关闭opcache不使用系统缓存(图7-6)

苏南大叔:php调试没有效果怎么办?关闭opcache不使用系统缓存 - opcache_2
php调试没有效果怎么办?关闭opcache不使用系统缓存(图7-7)

结论

非常简单的就做到了关闭opcache,当调试完毕后,删除这个文件即可。是不是非常容易?更多php编程小技巧,请关注苏南大叔的博客内容:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   php    opcache