php两个小问题

1) opcache缓存的问题。如果开启了opcache缓存,关闭了脚本检查opcache.validate_timestamps=0,修改代码会生效吗?如果不生效需要怎么办?

opcache.validate_timestamps boolean
如果启用,那么 OPcache 会每隔 opcache.revalidate_freq 设定的秒数 检查脚本是否更新。 如果禁用此选项,你必须使用 opcache_reset() 或者opcache_invalidate() 函数来手动重置 OPcache,也可以 通过重启 Web 服务器来使文件系统更改生效。

opcache.revalidate_freq integer
检查脚本时间戳是否有更新的周期,以秒为单位。 设置为 0 会导致针对每个请求, OPcache 都会检查脚本更新。如果 opcache.validate_timestamps 配置指令设置为禁用,那么此设置项将会被忽略。

【注意】如果禁用此选项,你必须使用 opcache_reset() 或者 opcache_invalidate() 函数来手动重置 OPcache,也可以 通过重启 Web 服务器来使文件系统更改生效。重启php-fpm或nginx都是没有用的,缓存存储到共享内存里面的,不清除共享内存,缓存是不会被清理的。
如果修改源代码一直不生效,就差删除文件了,可以排查一下这个设置。

2)php.ini修改后php-fpm子进程如果异常退出了,会加载最新配置吗?
不会pm = dynamic本身就支持动态子进程的,如果子进程重新创建使用新配置就乱套了。

参考文档:
https://www.php.net/manual/zh/opcache.configuration.php#ini.opcache.revalidate-freq

发表评论

电子邮件地址不会被公开。 必填项已用*标注