opcache
Posted xin-jun
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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()函数更新特定文件的缓存。
以上是关于opcache的主要内容,如果未能解决你的问题,请参考以下文章