php性能加速之opcache

什么是opcache

OPcache 是一个通过将 PHP 脚本预编译的字节码存储到共享内存中来提升 PHP 的性能的PHP扩展。 存储预编译字节码的好处就是 省去了每次加载和解析 PHP 脚本的开销。PHP 5.5.0 及后续版本中已经绑定了 OPcache 扩展。

opcahce是哪个环节提高PHP性能的

首先,我们来先大致了解下http-->nginx-->php-fpm-->php处理的流程机制
http request ---> nginx(代理)----> php-fpm(master 进程,分配)----> php-fpm(worker处理 ) ---->php-cgi(1.启动ZEND引擎,加载配置,载入module,2.初始化php脚本进行词法分析,语法分析,生成语法树,3.ZEND引擎编译语法树,生成可执行字节码。4.执行字节码,返回处理结果)
opcache 就缓存了php脚本预编译的字节码避免每次处理请求都重复执行(php-cgi处理的1,2,3)步骤,这样可以使得php性能大大提高。

开启opcache

php.ini

[opcache]
;开启opcache模块
zend_extension=opcache.so 
;开启opcache
opcache.enable=1 
opcache.enable_cli=1

; The OPcache shared memory storage size 设置共享内存大小
opcache.memory_consumption=128

; 存储临时字符串的内存大小
opcache.interned_strings_buffer=8

;OPcache哈希表中的最大键(脚本)数Only numbers between 200 and 1000000 are allowed.
opcache.max_accelerated_files=10000

; 在计划重新启动之前,“浪费”内存的最大百分比.
opcache.max_wasted_percentage=5

;如果启用,那么 OPcache 会每隔 [opcache.revalidate_freq](https://www.php.net/manual/zh/opcache.configuration.php#ini.opcache.revalidate-freq) 设定的秒数 检查脚本是否更新。 如果禁用此选项,你必须使用 [opcache_reset()](https://www.php.net/manual/zh/function.opcache-reset.php) 或者 [opcache_invalidate()](https://www.php.net/manual/zh/function.opcache-invalidate.php) 函数来手动重置 OPcache,也可以 通过重启 Web 服务器来使文件系统更改生效
opcache.validate_timestamps=1

;检查脚本时间戳是否有更新的周期,以秒为单位。 设置为 0 会导致针对每个请求, OPcache 都会检查脚本更新,与opcache.validate_timestamps配合使用
opcache.revalidate_freq=3600

;通常做法是不设置opcache过期时间,通过每次更新代码重启php-fpm来实现opcache的更新,所以更新代码的时间点尽量避免高流量时段

验证

1.重启php-fpm
2.打印phpinfo(),看到有ZEND OPcache就证明已经开启成功了

你可能感兴趣的:(php性能加速之opcache)