这两个php 的选项是和 opcache 密切相关的

今天修改一个网站,发现有一定的延迟。具体表现是如果修改了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中这个文件失效。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注