关于 opcache 带来多少性能及开发过程如何关闭
opache 带来多少性能?
通过我的观察,cpu
的影响不太明显,但 内存
的影响是明显的:
关闭 opache
:
开启 opache
:
对 opcache 我的理解不多,应该是和 php-fpm 进程的数量有关,每个请求都会创建一个 fpm 进程,占用几十兆的内存,而 opcache 能减少不断创建fpm 进程从而减小了内存占用。opcache = op + cache。
项目中的开启和关闭
线上阶段开启,而开发阶段则应该关闭,否则修改的代码不会立即生效。
在项目的根目录,通常都有一个 user.ini,关闭 opcache,添加一行 opcache.enable=0
即可。
亦或使用 laravel
的 command
运行你的测试代码,从而不必关闭 opcache
。
本作品采用《CC 协议》,转载必须注明作者和本文链接
如果是文件笔记多的框架开启opcache,并发时回减少cpu的压力。opcache缓存的结点是 require 等方式。这样就不用每次fpm来都去require文件,同时解析对应的php文件。这样可以减少文件解析带来的压力。但是像 laravel/symfony 中 .env 的引用是直接分析的文件如果不用框架或者composer自带的一些优化方式,是无法载入opcache。这种文本文件,可以生成 env.php 变成 require引入也可以加载到opcache。 开发环境中除了直接更改 .ini 。也可以根据 环境变量在框架运行时 使用 ini_set 去开启关闭 opcahce。 如果不使用docker 之类的以打包形式发布线上的话,我们之前是发布代码后请求一个同机器提供的内网接口,也是走php-fpm的,这个接口执行opcache_clean 这样就可以在代码稳定后清除原有的缓存。