今天在使用测试服务器的时候,发现服务器上已经预装了诸多php版本,我就切到了php5.6的版本.
在使用中,出现了一个问题:我远程修改了php文件,然后用浏览器发起请求,却发现并没有发生改动,要过个几十秒才改过来.我就很纳闷,是远程登录软件有问题吗?不对啊,我保存的时候,vi明确告诉我修改了什么.
怀疑是nginx使用了缓存,在网上搜了一下,发现nginx有:
1,静态文件的缓存,就是图片之类的,这个直接pass掉;
2.fastcgi_cache缓存,作用是缓存fastcgi生成的内容;
这个2我感觉仍然不是,因为我改了php文件后,虽然返回的不是修改后应得的数据,但是数据也是根据旧代码的逻辑,一直在变化的.
那最大的怀疑就是php了.
再次查找资料,发现我的php有可能开启了OPcache,赶紧去查找php配置文件,果真开启了这个玩意儿.
[opcache] zend_extension=opcache.so opcache.enable=1 opcache.memory_consumption=128 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=4000 opcache.revalidate_freq=60 opcache.save_comments=0 opcache.fast_shutdown=1 opcache.enable_cli=1 ;opcache.optimization_level=0
OPcache 通过将 PHP 脚本预编译的字节码存储到共享内存中来提升 PHP 的性能, 存储预编译字节码的好处就是 省去了每次加载和解析 PHP 脚本的开销。
PHP 5.5.0 及后续版本中已经绑定了 OPcache 扩展。 对于 PHP 5.2,5.3 和 5.4 版本可以使用 » PECL 扩展中的 OPcache 库。