当前位置:首页 > PHP > 正文内容

php8开启jit,php8配置jit,如何在PHP8中设置开启JIT

高老师5年前 (2020-11-08)PHP5245

PHP配置jit,PHP 8在PHP的内核中添加了JIT编译器,可以极大地提高性能。更强的cpu密集处理,或许以后php也可以适当做复杂协议解析。

首先,仅在启用opcache的情况下,JIT才有效,这是大多数PHP安装的默认设置,但您应确保opcache.enable在php.ini文件中将其设置为1 。通过opcache.jit_buffer_size设置JIT。

请注意,如果您通过命令行运行PHP,则还可以通过-d标志传递这些选项,而不是将它们添加到php.ini,例如

php -dopcache.enable=1 -dopcache.jit_buffer_size=100M

如果不包含此指令,那么默认值将设置为0,并且JIT将不会运行。

如果要在CLI脚本中测试JIT,则需要使用opcache.enable_cli配置项来启用opcache

php -dopcache.enable_cli=1 -dopcache.jit_buffer_size=100M

opcache.enable和opcache.enable_cli配置项的区别是如果要运行内置的PHP服务器,则应使用第一个。如果您实际上正在运行CLI脚本,则需要使用opcache.enable_cli。

在继续之前,让我们确保JIT确实有效,创建一个可通过浏览器或CLI访问的PHP脚本(取决于您测试JIT的位置),并查看以下输出

var_dump(opcache_get_status()['jit']);

正常输出如下

array:7 [
  "enabled" => true
  "on" => true
  "kind" => 5
  "opt_level" => 4
  "opt_flags" => 6
  "buffer_size" => 4080
  "buffer_free" => 0
]

如果enabled和on是正确的,那就ok了!

我们进一步来配置优化级别|JIT触发器|寄存器分配|CPU特定的优化标志,opcache.jit配置项专门配置这些。

配置的顺序是:CPU特定的优化标志、寄存器分配、JIT触发器、优化级别,官方给的推荐值为1255,例如:

opcache.enable=1 
opcache.jit=1255

来看看1255分别意味着什么。

CPU特定的优化标志:

0	没有
1个	启用AVX指令生成

R-寄存器分配:

0	不执行寄存器分配
1个	使用本地线性扫描寄存器分配器
2	使用全局线性扫描寄存器分配器

JIT触发器:

0	JIT在第一次脚本加载时的所有功能
1个	首次执行时的JIT函数
2	在第一个请求时进行概要分析,并在第二个请求时编译热功能
3	动态分析并编译热功能
4	在文档注释中使用@jit标记编译函数
5	跟踪JIT

O-优化级别:

0	不要准时
1个	最小JIT(调用标准VM处理程序)
2	选择性VM处理程序内联
3	基于单个函数的静态类型推断的优化JIT
4	静态类型推断和调用树的优化JIT
5	基于静态类型推断和内部过程分析的优化JIT

无论如何,内部人员建议将其1255作为最佳默认设置,因此,您的ini设置(或-d标志)应具有以下值:

opcache.enable=1 
opcache.jit_buffer_size=100M
opcache.jit=1255

扫描二维码推送至手机访问。

版权声明:本文由高久峰个人博客发布,如需转载请注明出处。

本文链接:https://blog.20230611.cn/post/189.html

分享给朋友:

“php8开启jit,php8配置jit,如何在PHP8中设置开启JIT” 的相关文章

PHP验证码不显示的终极解决方案

PHP验证码不显示的终极解决方案

PHP验证码不显示的问题应该是经常的事情,我在这里把2种解决方案都发出来方便大家后期使用.因为是昨天晚上自己写验证码都没有显示,我就直接把之前和李炎恢老师上课写的验证码拿来还是不显示,醉了。首先是第一种方法:1、打开服务器安装目录下的php.ini文件;2、去掉;extension=php_gd.d...

 php调用.net的dll文件,php调用.net dll

php调用.net的dll文件,php调用.net dll

本篇文章不是讲解如何用.net开发自己的dll然后PHP通过com调用。主要记录PHP官方支持的DOTNET 基本语法如下:$obj = new DOTNET("assembly", "classname")a...

php异步执行,php后台运行,如何在windows下让php后台运行

php异步执行,php后台运行,如何在windows下让php后台运行

如果想在windows中执行php,并且让php脚本在后台运行,可以用下面的cmd命令start /b php  D:\wwwroot\default\demo1\run.php例如上面的命令意思后台运行run.php,如果想用php编写异步代码: ...

php迭代器学习

php迭代器学习

php官方已经提供了Iterator(迭代器)接口,通过网上资料的学习,目前看适合超大集合或者数组提取使用。学习一个函数的实现对比内存占用差距.使用迭代器和普通循环实现range()函数。(1).普通循环实现range()函数。function newrange($low, $h...

composer自动加载类库(非psr4规范的文件)

composer自动加载类库(非psr4规范的文件)

在项目下的composer配置文件修改(PaySdk是我这里一个支付sdk的目录,包含各种各样的支付sdk,这样写的意思让composer自动把PaySdk下的所有文件自动加载):"autoload": {      &...

php mcrypt扩展被废弃的解决方案

php mcrypt扩展被废弃的解决方案

使用openssl扩展对应替换mcrypt的函数,(比较麻烦,但是openssl是未来趋势)在新版php中编译mcrypt扩展使用一个纯php代码实现的mcrypt扩展库,git地址为https://github.com/phpseclib/mcrypt_compat,每个mcrypt的方法都已经实...