opcache

opcache是php内置得一个加速模块,php解析PHP文件得时候,如果发现该文件对应得byte-code存储再内存中,省去编译过程直接执行内存中得文件。(提升性能10%)
#/etc/php7/fpm/php.ini 

validate_timestamps=1  
revalidate_freq=0
memory_consumption=64
max_accelerated_files=4000 
opcache.fast_shutdown=0
validate_timestamps设置0,PHP 解析器只要发现内存中有对应 PHP 文件的 byte-code 内容就会加载.你更新了服务器得代码后php并不会直接执行新得代码。
假如 validate_timestamps 等于 1,PHP 解析器从内存中获取某个 PHP 文件对应的byte-code,会通过一定的方法比较 byte-code 内容是不是最新的(读取文件系统),假如比较后发现 byte-code 已经过期,应该重新编译生成。
需要注意,PHP 解析器不是每次都会去检查(一切为了效率),检查的频率取决于 revalidate_freq 参数( 0 表示每次都检查)。

memory_consumption 这个参数很好理解,代表这块内存区开辟的大小,另外需要注意不同 PHP SAPI 内存区不是共享的,
就是说同一个 PHP 文件,运行在命令行模式或者 PHP-FPM 模式下,对应的 byte-code 会存储在不同的内存区中。
max_accelerated_files 表示内存区最大能存储的 PHP 文件数量。

validate_timestamps建议这个生产环境不开启,开发环境开启。
不开启:就是不校验php文件最近有没有修改过,一直走byte-code中得代码,主要是为了生产环境得执行效率。下面是此时解决文件更新得方法
第一种方法就是调用 opcache_reset() 函数,
第二种重启 PHP SPAI,比如运行service php5-fpm restart等。
但是上面两种方式都太凶残,假如开发的项目频繁上线,每次缓存区都要全部清空,可以使用opcache_invalidate()函数更新特定文件的缓存。

  

原文地址:https://www.cnblogs.com/xin-jun/p/11230601.html