有一次上线,运维部署代码后测试,发现没有新加的功能,访问的还是更新前的功能。

上服务器,查看有更新后的代码,

为保留上个版本的代码,采用的是每个版本一个文件夹,软链最新的版本为线上版本,

进入最新文件夹发现,没有产生任何日志,就推测访问的是上个版本的代码,

进入上个版本发现有访问日志,日志文件一般一天产生一次,新的明天才会在新版本产生。

找了很久没有找到原因,后来运维屏蔽了服务器访问,重启php-fpm后可以访问到新的代码

原因是opcache缓存,虽然软连接指向的目录改变了,但是opcache识别到的目录是一样的,使用了直接缓存的文件,

所以访问的是旧版本。

可以修改php.ini里配置:

opcache.validate_timestamps=1
opcache.revalidate_freq=0
这样opcache就会每次都验证PHP文件的修改时间戳,如果PHP文件被修改过,opcache会重新缓存新的PHP文件opcode到内存.

原文链接:https://blog.csdn.net/hello_old_city/article/details/82907327