php8编译安装开启opcache和jit配置
Posted 代码当酒喝
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php8编译安装开启opcache和jit配置相关的知识,希望对你有一定的参考价值。
简单了解其中关系
JIT 是在 Opcache 优化的基础上结合 Runtime 信息将字节码编译为机器码缓存起来
现有的 Opcache 优化不受任何影响,并且 php 的 JIT 是在 Opcache 中提供的
JIT 不是对 Opcache 替代,而是增强,在启用 JIT 的情况下,如果 Zend 底层发现特定字节码已经编译为机器码,则可以绕过 Zend VM 直接让 CPU 执行机器码,从而提高代码性能。
开启opcache 和 JIT
opcache 配置参数参考:https://www.php.net/manual/zh/opcache.configuration.php
JIT 配置参数参考:https://www.laruence.com/2020/06/27/5963.html
php.ini中找到 [opcache]
位置
zend_extension=/usr/local/php8/lib/php/extensions/no-debug-non-zts-20200930/opcache.so
[opcache]
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=192
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
;jit配置
opcache.jit=1205
opcache.jit_buffer_size=64M
重新启动php-fpm
关闭:
killall /usr/local/php/sbin/php-fpm
重启
/usr/local/php/sbin/php-fpm
phpinfo()中查看就能搜索到 zend opcache
同时搜索jit可以看到我们刚才配置的jit
到这里已经完毕了。
为什么要开启这个?
源代码(人认识)->字节码(解释器认识)->机器码(硬件认识)
来看下PHP的执行流程,假设有个a.php文件,不启用opacache的流程如下:
a.php->经过zend编译->opcode->PHP解释器->机器码
启用
opacache的流程如下
a.php->查找opacache缓存,如果没有则进行zend编译为opcode并缓存->opacode->PHP解释器->机器码
启用jit的流程如下
a.php->编译->机器码
以后都只执行机器码,不编译,效率上高了很多
以上是关于php8编译安装开启opcache和jit配置的主要内容,如果未能解决你的问题,请参考以下文章