今天修改一个网站,发现有一定的延迟。具体表现是如果修改了php文件,总要过几秒钟才有结果。检查了下配置文件,发现有设置不合理的地方。
贴出配置信息
opcache.validate_timestamps = On
opcache.revalidate_freq = 5
validate_timestamps 这个配置的作用是验证通过时间截来验证文件是否被修改过,因为一个文件被修改后,时间截是一定会变化的。
revalidate_freq 这是检查文件的频率。具体的过程是如果开启了 opcache ,第一次访问文件 index.php; 会编译成字节码,可能是存储在文件种也可能是存储在内存中。如果文件的字节码存在了,就不用再去访问原始文件。因为即使再次访问原始文件,原始文件也要编译成字节码再运行。这里 revalidate_freq = 5 ,意思是 5秒内只要 opcache 中存在这个文件的字节码,就不去访问这文件。
这两个配置如何设置
如果是开发环境
opcache.validate_timestamps = On
opcache.revalidate_freq = 0
opcache.revalidate_freq 设置成 0 表示每次都检查。
如果是运行环境
opcache.validate_timestamps = Off
opcache.revalidate_freq = 0
validate_timestamps = Off 表示不进行检查,也就是说,即使文件有变化,因为opcache缓存中有这个文件,所有怎么修改php文件都不起作用。除非让opcache中这个文件失效。