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

时间:2022-11-03 07:28:14 | 浏览:9059

出品|开源中国文|局长PHP 社区上周(3月8日)发起了将 Fiber RFC 添加到 PHP 的投票。根据 Fiber RFC 中的描述,Fiber 主要用于为异步 I/O 实现协程,提供了独立栈分配、函数调用的暂停和恢复功能,它将作为扩

出品|开源中国

文|局长

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 变得更好,但无论如何,最后还是以投票结果为准。


相关资讯

PHP正在干掉Python

作者 | Beau Beauchamp 译者 | 弯月出品 | CSDN(ID:CSDNnews)在流行文化的冲击下,也许很多人都不赞同本文表达的观点,但我毅然决定再一次逆流而上。我认为,虽然 PHP 百般受轻视,但这门编程语言的流行度比以

“最好的语言”PHP过时了吗?

晓查 乾明 发自 凹非寺 量子位 报道 | 公众号 QbitAI当下,如果你打开搜索引擎,搜索关键词“PHP过时”,能找到714万个相关结果。这些结果之中,不乏有2016年、2018年的结果,说PHP已经过时了。现已2019年,这个曾经自称

2019年最流行的七个PHPWeb框架

PHP 是最流行的 Web 服务端编程语言,并且在 2019 年仍然很火。因此,我们将在这里盘点 2019 年七个最好的 PHP 框架。这里讨论的 PHP 框架主要用于工程实践,通常用于构建复杂、安全和可扩展的 Web 应用程序。在讨论最好

PHP简介

PHP 是服务器端脚本语言。您应当具备的基础知识在继续学习之前,您需要对以下知识有基本的了解:HTMLCSS如果您希望首先学习这些项目,请在我们的 首页 访问这些教程。PHP 是什么?PHP(全称:PHP:Hypertext Preproc

PHP8.1.0正式发布

出品|开源中国文|御坂弟弟PHP 8.1.0 现已发布,该版本带来了许多改进和新功能。枚举使用枚举而不是一组常量并立即进行验证。只读属性只读属性不能在初始化后更改,比如,在为它们分配值后。它们可以用于对值对象和数据传输对象建模。First-

PHP快跌出TIOBE编程排行榜Top10

TIOBE 公布了 2021 年 11 月的编程语言排行榜。自 20 多年前 TIOBE 指数开始发布以来,PHP 一直常驻在榜单前十;然而最近,该语言已经开始在前十的边缘苦苦挣扎。TIOBE CEO Paul Jansen 称,“PHP

PHP是最糟糕的编程语言?

我已有将近二十年的编程经验,并使用过各种编程语言进行开发。在我以前做过的很多工作和现在正在做的这份工作中,我非常高兴能够将 PHP 作为核心编程语言。从第一次使用 PHP 工作开始,我就听到了关于 PHP 的各种抱怨,但与此同时我也看到了

PHP没你想的那么差

PHP现在名声很糟糕,因为它曾经是“可怕”的。本文试着回答一些常见的关于 PHP 的断言,目的是向非技术人员解释,PHP 并不像许多人所说的那么糟糕。它是不是鼓励糟糕的实践?不再是了。过去,许多开发者被书本教授非常糟糕的实践,因此 PHP

PHP可能在未来十年内消失?

犹记得,据 2001 年 7 月的 PHP 官方文档描述,“PHP 是有史以来最好的语言,没有之一。它快速,非常强大,而且免费。"不过,随着时间的迭代,不少开发者发现所谓世界上最好的语言 PHP,虽然能极大地提升性能,但是其功能不够完善最终

PHP正在“杀死”Python

最近,我突然发现自己好像又在逆潮流而动。可能我的想法与很多朋友不同,我认为 PHP 这个编程语言界的“混蛋”比以往任何时候都更受欢迎。或许你会质疑——PHP 不是已经完蛋了吗?市面上已经出现了很多“更好”的编程语言,不是吗?答案显然是否定的

友情链接

SEO域名抢注宝宝起名网妈妈知道币圈贵州村BA篮球网南宁新闻资讯网雀巢咖啡品鉴网保山今日新闻网李连杰影迷网上海高端交友网天然九眼天珠仓鼠品种网中华家谱族谱网广西旅游网今日青岛甘蔗种植网丽水新闻头条网小龙虾养殖育儿知识网
PHP编程知识网-php开源建站系统、PHP程序员网站开发、php编程工具、php菜鸟教程下载、PHP网络编程教学、php网络编程、php工程师、php菜鸟教程数据库、PHP网站开发、PHP精品源码网站、php程序员入门、php零基础入门教程、php源码搭建网站流程、php从入门到精通第2版、php开发简单网站、php制作网站实例、php网站开发实例教程源代码、php中文网破解版、php中文网。
php编程知识 yoceo.cn ©2022-2028版权所有