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配置的主要内容,如果未能解决你的问题,请参考以下文章

PHP 8的新功能展望:JIT以及其他

无wifi开启jit

PHP RFC投票通过,PHP8将会支持JIT

理解 PHP 8 的 JIT

Zend JIT 即时编译器开源

php开启opcache