搜尋
首頁頭條PHP創辦人和Swoole創辦人投下反對票,協程提案Fiber引發辯

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創辦人和Swoole創辦人投下反對票,協程提案Fiber引發辯

目前公開的投票結果顯示,兩位創辦人-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) 造成影響。

PHP創辦人和Swoole創辦人投下反對票,協程提案Fiber引發辯

有人將這篇貼文搬運到了國內的社區,同樣引起了激烈的討論。 @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 方面進行重新設計,而不是倉促做出決定。

PHP創辦人和Swoole創辦人投下反對票,協程提案Fiber引發辯

@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 變得更好,但無論如何,最後還是以投票結果為準。


#
陳述
本文轉載於:头条。如有侵權,請聯絡admin@php.cn刪除
php怎么把负数转为正整数php怎么把负数转为正整数Apr 19, 2022 pm 08:59 PM

php把负数转为正整数的方法:1、使用abs()函数将负数转为正数,使用intval()函数对正数取整,转为正整数,语法“intval(abs($number))”;2、利用“~”位运算符将负数取反加一,语法“~$number + 1”。

php怎么实现几秒后执行一个函数php怎么实现几秒后执行一个函数Apr 24, 2022 pm 01:12 PM

实现方法:1、使用“sleep(延迟秒数)”语句,可延迟执行函数若干秒;2、使用“time_nanosleep(延迟秒数,延迟纳秒数)”语句,可延迟执行函数若干秒和纳秒;3、使用“time_sleep_until(time()+7)”语句。

php字符串有没有下标php字符串有没有下标Apr 24, 2022 am 11:49 AM

php字符串有下标。在PHP中,下标不仅可以应用于数组和对象,还可应用于字符串,利用字符串的下标和中括号“[]”可以访问指定索引位置的字符,并对该字符进行读写,语法“字符串名[下标值]”;字符串的下标值(索引值)只能是整数类型,起始值为0。

php怎么除以100保留两位小数php怎么除以100保留两位小数Apr 22, 2022 pm 06:23 PM

php除以100保留两位小数的方法:1、利用“/”运算符进行除法运算,语法“数值 / 100”;2、使用“number_format(除法结果, 2)”或“sprintf("%.2f",除法结果)”语句进行四舍五入的处理值,并保留两位小数。

php怎么读取字符串后几个字符php怎么读取字符串后几个字符Apr 22, 2022 pm 08:31 PM

在php中,可以使用substr()函数来读取字符串后几个字符,只需要将该函数的第二个参数设置为负值,第三个参数省略即可;语法为“substr(字符串,-n)”,表示读取从字符串结尾处向前数第n个字符开始,直到字符串结尾的全部字符。

php怎么根据年月日判断是一年的第几天php怎么根据年月日判断是一年的第几天Apr 22, 2022 pm 05:02 PM

判断方法:1、使用“strtotime("年-月-日")”语句将给定的年月日转换为时间戳格式;2、用“date("z",时间戳)+1”语句计算指定时间戳是一年的第几天。date()返回的天数是从0开始计算的,因此真实天数需要在此基础上加1。

php怎么替换nbsp空格符php怎么替换nbsp空格符Apr 24, 2022 pm 02:55 PM

方法:1、用“str_replace(" ","其他字符",$str)”语句,可将nbsp符替换为其他字符;2、用“preg_replace("/(\s|\&nbsp\;||\xc2\xa0)/","其他字符",$str)”语句。

php怎么查找字符串是第几位php怎么查找字符串是第几位Apr 22, 2022 pm 06:48 PM

查找方法:1、用strpos(),语法“strpos("字符串值","查找子串")+1”;2、用stripos(),语法“strpos("字符串值","查找子串")+1”。因为字符串是从0开始计数的,因此两个函数获取的位置需要进行加1处理。

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能