惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
Docker
爱范儿
爱范儿
T
The Exploit Database - CXSecurity.com
量子位
T
Tailwind CSS Blog
T
Threatpost
The GitHub Blog
The GitHub Blog
AWS News Blog
AWS News Blog
云风的 BLOG
云风的 BLOG
K
Kaspersky official blog
P
Proofpoint News Feed
博客园 - 司徒正美
L
LangChain Blog
T
Threat Research - Cisco Blogs
C
CERT Recently Published Vulnerability Notes
罗磊的独立博客
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 叶小钗
S
Secure Thoughts
The Last Watchdog
The Last Watchdog
Spread Privacy
Spread Privacy
H
Hacker News: Front Page
T
Troy Hunt's Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Google DeepMind News
Google DeepMind News
W
WeLiveSecurity
A
Arctic Wolf
Apple Machine Learning Research
Apple Machine Learning Research
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
P
Proofpoint News Feed
T
Tor Project blog
T
The Blog of Author Tim Ferriss
I
Intezer
P
Privacy & Cybersecurity Law Blog
美团技术团队
N
Netflix TechBlog - Medium
博客园_首页
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
V
Vulnerabilities – Threatpost
Application and Cybersecurity Blog
Application and Cybersecurity Blog
G
Google Developers Blog
Attack and Defense Labs
Attack and Defense Labs
T
Tenable Blog
月光博客
月光博客
Stack Overflow Blog
Stack Overflow Blog
J
Java Code Geeks
腾讯CDC
Microsoft Security Blog
Microsoft Security Blog
A
About on SuperTechFans
Last Week in AI
Last Week in AI

不明のNetWorkOS

Libmodsecurity 的安装与使用 使用 GitHub 部署密钥部署代码 Supervisor 的安装与使用 IOC 服务容器 在 Nginx 中为 PHP 添加环境变量 Python 使用 virtualenv 部署 flask 项目 Git 基础命令 在 Laravel 中的 Vue 组件无法使用 @apply 的解决方案 [转载] 免费 VPS 大全
PHP 中的 JIT 配置
不明 · 2022-01-18 · via 不明のNetWorkOS

PHP8 在 PHP 的内核中添加了 JIT 编译器,开启后可以为程序增加一定的运行速度。

要使用 JIT 必须开启 opcache

opcache 的配置

// 加载 opcache
zend_extension=opcache.so
// 开启 opcache
opcache.enable=1
// OPcache 共享内存存储大小,单位 MB
opcache.memory_consumption=1024
// PHP 使用了一种叫做字符串驻留,默认是 4MB,建议设置为 64
opcache.interned_strings_buffer=64
// 这个选项用于控制内存中最多可以缓存多少个 PHP 文件, 这个选项必须得设置得足够大,大于你的项目中的所有 PHP 文件的总和
opcache.max_accelerated_files=80000
// 设置多少秒后重新验证脚本,如果设置为 0,需要手动在每次 PHP 代码更改后手动清除 opcache 缓存
opcache.validate_timestamps=0
// 设置缓存的过期时间(单位是秒), 为 0 的话每次都要检查
opcache.revalidate_freq=3
// 允许更快速关闭
opcache.fast_shutdown=1
// CLI 环境下,PHP 启用 OPcache
opcache.enable_cli=1

JIT 的配置

opcache.jit 是有点复杂的配置值。它接受 disable,on,off,trace,function 和按顺序排列的 4 个不同标志的 4 位值

  • disable:在启动时完全禁用 JIT 功能,并且在运行时无法启用
  • off:禁用,但是可以在运行时启用 JIT
  • on:启用 tracing 模式
  • tracing:细化配置,别名 1254
  • function:细化配置,别名 1205

其默认值为 tracing,它在运行代码时编译热代码,并允许使用 CPU 寄存器和 AVX 扩展

jit 标志

每个数字仅表示一个配置选项
以 CRTO 的形式,并接受 C,R,T,O 位置的以下值

C-CPU 特定的优化标志

code说明
0不使用
1使用

R-寄存器分配

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

T-JIT 触发器

code说明
0PHP 脚本载入的时候就 JIT
1当函数第一次被执行时 JIT
2在一次运行后,JIT 调用次数最多的百分之(opcache.prof_threshold * 100)的函数
3当函数/方法执行超过 N(N 和 opcache.jit_hot_func 相关)次以后 JIT
4当函数方法的注释中含有 @jit 的时候对它进行 JIT
5当一个 Trace 执行超过 N 次(和 opcache.jit_hot_loop,jit_hot_return 等有关)以后 JIT

O-优化级别

code说明
0最小 JIT(调用标准 VM 处理程序)
1做 opline 之间的跳转部分的 JIT
2基于单个函数的静态类型推断的优化 JIT
4基于类型推断,过程调用图做函数级别 JIT
5基于类型推断,过程调用图做脚本级别的 JIT

基于以上的配置选项来说,应该尽量使用 12x5 型的配置,此时应该是效果最优的。
如果是脚本级别的,应该使用 1205
如果是 Web 服务的,应该使用 1255 或 1235

总之,应该根据自己项目的具体要求来配置 JIT

因此,JIT 的推荐配置如下

opcache.jit_buffer_size=64
opcache.jit=1255