PHP 8.4的JIT编译器通过IR中间表示、更激进热点优化、增强函数内联与寄存器分配,显著提升数学密集型及长时运行任务性能,实测较7.4提速约30%,但需合理配置OPcache且不优化非热点操作。

PHP 在 2026 年不是“还能用”,而是大量生产系统正在主动升级到 PHP 8.4 —— 它已从“够用”的脚本语言,变成可支撑高并发 API、实时服务甚至云函数的现代后端选项。
PHP 8.4 的 JIT 编译器到底改了什么
很多人以为 JIT 是“自动变快”,其实它只对特定代码路径生效:循环体、递归调用、数学密集型逻辑(比如 fibonacci() 或图像缩放计算)。OPcache 必须开启且配置合理,否则 JIT 不会触发。
-
opcache.jit_buffer_size至少设为256M,默认的16M在 Laravel 应用里基本无效 - JIT 不优化字符串拼接或数组键查找这类高频但非“热点”的操作,别指望它让
foreach遍历万条记录快 3 倍 - 启用后内存占用会上升 15%–20%,在容器环境里要同步调大
memory_limit
异步能力不再依赖 Swoole
PHP 8.1 引入的 Fibers + PHP 8.4 改进的 curl_multi_* 和 stream_select 支持,让原生协程成为可能。你不需要再编译 Swoole 扩展,也能写出非阻塞 I/O 逻辑。
- 用
Fiber::suspend()暂停当前协程,等curl_exec()返回后再恢复,比传统多进程省 60% 内存 - 但
Fibers不是async/await:没有语法糖,必须手动管理调度器,Laravel 11 的Illuminate\Bus\Dispatcher已内置轻量调度器可复用 - 注意:
mysqli扩展仍不支持异步,要用PDO+mysqlnd配合MYSQLI_ASYNC标志
类型系统已实际影响框架行为
联合类型(string|int|null)、只读类(readonly class)、构造器属性提升(public function __construct(public string $name))这些特性,不再是“写起来更爽”的装饰,它们直接改变运行时校验逻辑和 IDE 补全精度。
立即学习“PHP免费学习笔记(深入)”;
- Laravel 11 的
Request类大量使用联合类型声明,配合#[Validate]属性,使表单验证失败时能提前抛出TypeError而非运行时异常 - 如果你在 DTO 中用了
readonly,序列化时json_encode()会跳过私有属性,但serialize()不会——这点在 Redis 缓存场景容易踩坑 - PHPStan 1.10+ 能识别
#[\Override]属性,但 Psalm 还不支持,跨工具链检查时类型误报率会上升
真正难的不是学新语法,而是判断哪些旧项目值得升级:一个纯 WordPress 主题没必要上 Fibers,但一个日均百万请求的 WooCommerce 插件,把 WC_Product_Query 改成基于 Fiber 的批量预加载,QPS 能稳提 35%。升级决策得看数据,不是版本号。



















