关于 PHP 8.1 的 Fiber RFC

最新的 PHP 8.1 增加了一个 Fiber 的提案,最近讨论的比较多。有不少好事者拿来说事儿,说是 “Fiber 进入内核之后,Swoole 的使用者就大幅减少“

实际上 Fiber 扩展进入内核后,由于它是一个非常底层的 API ,并不是直接可以使用的技术,不会对 Swoole 产生影响。真正和 Swoole 竞争的是应该是 Amphp 、ReactPHP 。Fiber 反而对 Swoole 是有好处的,PHP 内核开发者维护了协程切换的全局状态列表,Swoole PHPCoroutine 这部分的代码实现就变简单了。另外,其他扩展也会注意到协程的存在,使用 C 全局变量或栈上内存时考虑到协程切换的可能性,避免出现 Crash。ext-fiber 合并进来之后,也应标记为 alpha 状态,一些特殊情况能会引起崩溃,需要比较长的时间去收集解决这些问题。

最近这几年即便官方连续出了很多个大版本,PHP 还是一直是在走下坡路。有许多 PHP 开发者说是因为 PHP 性能不行,没有 JIT。于是 PHP8.0 加入了 JIT。还有人说 PHP 没有协程,所以 PHP8.1 要加入 Fiber。马上就会有人说 PHP 缺少多线程,按照现在这个节奏,可以预见未来有可能 PHP 的多线程扩展 parallels 也会合并到内核。PHP8 还加入了一个 FFI 模块,甚至可以直接使用 PHP 调用 C 库。

可是真的加入如此多的能力,PHP 就得到很大的改变了吗?

你们想要的 Fiber 是这样的:

在这里插入图片描述

实际上 PHP 8.1 Fiber 是这样的:

在这里插入图片描述

动态语言中除了 PHP 之外,Python、Ruby、Lua 在很早就有协程支持了,但实际上这些编程语言在协程并发编程方面并没有多出色。真正将协程技术发扬光大的是 Golang ,为什么 Golang 在协程编程方面的如此成功?这是因为它提供了完整的、成体系的一整套技术方案,从语言设计到编译器、协程调度器、标准库、调试器,这才是工业级的技术。在多线程技术方向,很多编程语言都有多线程支持,但真正被广泛使用、达到工业级水平的多线程系统只有 Java 。在 PHP 中真正能达到工业级水平的技术也就是 Apache+mod_php 和 PHP-FPM 。

协程的技术也是一样,PHP 开发者想要从传统的 L

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值