a632079
2021-01-25 23:35:17 +08:00
首先,传统 PHPer 仍然借助的是 CGI/FPM 或者基于 Apache 的 mod_php 来使用 PHP 业务的. 这种模式下, PHP 是收到请求开始初始化,执行代码,请求结束,直接销毁. opcache(包括 preload) 等优化方案只是对常用代码编译为 opcode(可以理解为 VM 中间代码,在运行时可以由 Zend 引擎直接转换为机器码(跳过分析过程), 这就是提速的原因之一.
PHP 8 引入了 JIT, 实际上是一个非常粗浅的 JIT(相比较 PyPy 和 V8), 而且受制于前述的生命周期,实际上的提升其实是非常有限的.
终于到正题了.题主提到的异步或协程特性其实并不太适合前表的生命周期,加入这类特性其实不会对性能有太大的提升,反而提高了学习门槛,提高了优化难度. 简而概之,对于传统的 PHP 开发,可能收益并没有那么大,做代码优化还不如堆机器.
这边提一句,如果真需要高性能 PHP 开发的话, 还是得回归 php cli 开发. 开发一个常驻内存的程序, 也就是目前 swoole 做的很成功的地方. 我相信如果 PHP 官方引入了异步,协程, 常驻类程序会收益匪浅.
#2 说的很对, Swoole 这种基于 Cli 的开发模式并不是 PHP 社区的热点, 和大家印象里的 PHP 迥然不同, 能接受 Swoole, 为什么接受不了 Go(特性少,简单), node, Java 呢?