PHP官方OPcache文档 https://www.php.net/manual/zh/book.opcache.php
使用下列推荐设置来获得较好的 性能:
zend_extension=opcache
opcache.memory_consumption=128 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=4000 opcache.revalidate_freq=60 # 每60s检测 在 opcache.validate_timestamps 设置为1的情况下才生效 通常线上opcache.validate_timestamps是开启的 可以获得更高效的性能 opcache.fast_shutdown=1 opcache.enable_cli=1
你也可以禁用 opcache.save_comments 并且启用 opcache.enable_file_override。
需要提醒的是,在生产环境中使用上述配置之前,必须经过严格测试。 因为上述配置存在一个已知问题,它会引发一些框架和应用的异常, 尤其是在存在文档使用了备注注解的时候。opcache.save_comments不建议开启
每次发布后fpm的opcache需要清理,有两种方式:
1. fpm reload 这种会导致出现502的情况
2. cachetool
使用方式 php cachetool.phar opcache:reset --fcgi=127.0.0.1:9000
cachetool 原理是通过模拟fastcgi client协议 创建临时脚本运行opcache_reset函数 然后清理PHP的opcache
参考地址:https://github.com/gordalina/cachetool https://gordalina.github.io/cachetool/ https://github.com/hollodotme/fast-cgi-client