开源中国OSC 潜水
  • 9发帖数
  • 9主题数
  • 0关注数
  • 0粉丝
开启左侧

PHP首创人和Swoole首创人投反对票,协程提案Fiber引激辩

[复制链接]
开源中国OSC 发表于 2021-3-16 10:25:21 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
出品|开源中国
文|局长
PHP 社区上周(3月8日)发起了将 Fiber RFC 添加到 PHP 的投票。
根据 Fiber RFC 中的描述,Fiber 主要用于为异步 I/O 实现协程,提供了独立栈分配、函数调用的暂停和恢复功能,它将作为扩展集成到 PHP 中:https://github.com/amphp/ext-fiber。
按照计划,投票将于3月22日截止,最新数据为 38 票赞同、11 票反对。从现在的结果来看,Fiber RFC 很大可能会通过投票从而被添加到 PHP(获得 2/3 的同意票即可通过)。

                               
登录/注册后可看大图

当前公开的投票结果体现,两位创始人——PHP 创始人 Rasmus Lerdorf 和 Swoole 创始人韩天峰@matyhtf 均投了反对票。
Swoole 是一个 PHP 协程框架,为 PHP 提供协程、高性能网络编程支持,并提供了多种通信协议的网络服务器和客户端模块,可以方便快速地实现 TCP/UDP 服务、高性能 Web、WebSocket 服务、物联网、实时通讯、游戏、微服务等,使 PHP 不再局限于传统的 Web 领域。(来自 Swoole 官网先容)
Reddit 上的一篇帖子引用了@matyhtf 在 PHP 内部发送的邮件,里面提到他担心 Fiber 只能在 AmPHP 这种框架中使用,而对于其他普通的 PHP Web 项目没有价值。这篇帖子在 Reddit 引起了不少讨论,有人认为 Fiber 是 generator 的升级版本,它是协程的最小化焦点实现,并且不会对 PHP 产生倒霉影响,将它集成到 PHP 有利于发展和探索未来的异步生态。也有人质疑@matyhtf 投反对票是由于担心此提案会对 Swoole 的商业化 (Swoole Plus) 造成影响。

                               
登录/注册后可看大图

有人将这篇帖子搬运到了国内的社区,同样引起了猛烈的讨论。@matyhtf 对此进行了回应,他的观点是 Fiber 还不敷完善,应该先作为 PECL 扩展进行验证,而不是直接集成到 PHP 中。@matyhtf 在知乎上的答案写道:
我要表达的意思是 “Fiber 主要是提供给 amphp 和 reactphp 如许 php 实现的异步框架使用的,对于普通 PHP Web 项目没有太大价值”。
……
对于 Fiber RFC 我的观点是,发起先作为一个 PECL 扩展,PHP 内核开发者能够思考清楚 PHP 未来协程的团体技术体系和实现方式后再做决定。实际上异步编程颠覆了 PHP 一直以来的设计哲学和编程模式。假如 PHP 语言官方决定要支持像 Node.js、Golang、Swoole 如许的异步/协程并发编程模式,那么就需要系统性思考一下团体的架构,以及完整的实现。
@matyhtf 表示他给 Fiber RFC 投反对票与 Swoole 无关,由于 Swoole 是一个纯粹的开源技术项目,而不是商业产物。假如有可能,他甚至愿意修改 Swoole 的 Copyright,并将 swoole-src 的源代码贡献给 php-src。不过对于 PHP 支持协程的提案,他认为这是一项重大变更,应该进行深入讨论,从语法、尺度库和 ZendVM 方面进行重新设计,而不是急忙做出决定。

                               
登录/注册后可看大图

@matyhtf 继续发表文章(关于 PHP 8.1 的 Fiber RFC)从技术细节具体地表明了自己反对 Fiber RFC 的原因。他认为用户真正需要的是一种完整的、系统性、成体系、简单易用、可靠的一整套技术方案,并根据自己的经验提出可从 7 个方面进行考虑:

  • EventLoop API
  • 协程(对应 ext-fiber)
  • IO 调度器(Socket/FileSystem/ChildProcess/Signal/Timer/Stdout/Stdin)
  • CPU 调度器
  • 现有同步壅闭 IO 扩展(redis、curl、php_stream、sockets、mysqli、pdo_mysql 等)和内置函数(sleep、shell_exec、sleep、gethostbyname 等)怎样实现支持协程,变成异步非壅闭模式
  • 协程通信(channel)
  • 服务器:实现 PHP-FPM 协程版,或者提供一个新的协程 HttpServer
固然@matyhtf 给出了充分的理由投反对票,但从现在看来,许多人并不认可他的做法。他们认为,即便实现 PHP 的协程化难度很大也不需要等到有成熟方案之后才合并,也不能由于 Fiber 不敷完善,就推测它不能满足大多数人的要求。反而由于 Fiber 是最小化实现,集成到 PHP 不会对使用者造成很大的维护负担,却又能满足很多人的项目需求,他们可以在此基础上进行更多实现,为用户开放了探索各种协程方案的可能。
因此,这一部分开发者认为没有理由反对将 Fiber RFC 添加到 PHP。两边思考角度不同,所以给出了截然相反的投票结果,而且他们都有各自的立场——固然初衷都是盼望 PHP 变得更好,但无论怎样,最后还是以投票结果为准。

精彩评论12

巨炮战车Stilwell 发表于 2021-3-16 16:29:40 | 显示全部楼层
支持吧,毕竟是PHP官方集成,对后面的异步是探索性的,而且市面上已经有了成熟的解决方案,可以综合借鉴,由此也看出目前的PHP开发组队未来异步的方针。
愤怒的小鸟17356 发表于 2021-3-16 22:11:09 | 显示全部楼层
php不是本身支持并发吗?
o故乡情Oo 发表于 2021-3-19 00:37:42 | 显示全部楼层
来头条上学习PHP
步尘14 发表于 2021-3-16 23:42:23 | 显示全部楼层
早该如此,php不能总是守着自己那一亩三分地
wxxbard 发表于 2021-3-16 16:10:45 | 显示全部楼层
支持
紫星洛华 发表于 2021-3-16 16:42:22 | 显示全部楼层
对web应用没有价值,是不是也像线程一样只能在cmd下运行?如果是那样,还真是没多大价值。
李惟levi 发表于 2021-3-16 14:25:15 | 显示全部楼层
为什么没有看到鸟哥投票叻
静气以致远 发表于 2021-3-16 16:14:22 | 显示全部楼层
go语言直接有这些功能
自求多福的猿 发表于 2021-3-16 16:27:18 | 显示全部楼层
协程出来,直接把swoole干死了。 肯定不同意呀
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

猜你喜欢
在线客服邮箱
wxcy#wkgb.net

邮箱地址#换为@

Powered by 创意电子 ©2018-现在 专注资源实战分享源码下载站联盟商城