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

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

Mar 16, 2021 pm 06:01 PM
php

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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 Dec 24, 2024 pm 04:42 PM

PHP 8.4 帶來了多項新功能、安全性改進和效能改進,同時棄用和刪除了大量功能。 本指南介紹如何在 Ubuntu、Debian 或其衍生版本上安裝 PHP 8.4 或升級到 PHP 8.4

如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 Dec 20, 2024 am 11:31 AM

Visual Studio Code,也稱為 VS Code,是一個免費的原始碼編輯器 - 或整合開發環境 (IDE) - 可用於所有主要作業系統。 VS Code 擁有大量針對多種程式語言的擴展,可以輕鬆編寫

在PHP API中說明JSON Web令牌(JWT)及其用例。 在PHP API中說明JSON Web令牌(JWT)及其用例。 Apr 05, 2025 am 12:04 AM

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

您如何在PHP中解析和處理HTML/XML? 您如何在PHP中解析和處理HTML/XML? Feb 07, 2025 am 11:57 AM

本教程演示瞭如何使用PHP有效地處理XML文檔。 XML(可擴展的標記語言)是一種用於人類可讀性和機器解析的多功能文本標記語言。它通常用於數據存儲

解釋PHP中的晚期靜態綁定(靜態::)。 解釋PHP中的晚期靜態綁定(靜態::)。 Apr 03, 2025 am 12:04 AM

靜態綁定(static::)在PHP中實現晚期靜態綁定(LSB),允許在靜態上下文中引用調用類而非定義類。 1)解析過程在運行時進行,2)在繼承關係中向上查找調用類,3)可能帶來性能開銷。

php程序在字符串中計數元音 php程序在字符串中計數元音 Feb 07, 2025 pm 12:12 PM

字符串是由字符組成的序列,包括字母、數字和符號。本教程將學習如何使用不同的方法在PHP中計算給定字符串中元音的數量。英語中的元音是a、e、i、o、u,它們可以是大寫或小寫。 什麼是元音? 元音是代表特定語音的字母字符。英語中共有五個元音,包括大寫和小寫: a, e, i, o, u 示例 1 輸入:字符串 = "Tutorialspoint" 輸出:6 解釋 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。總共有 6 個元

什麼是PHP魔術方法(__ -construct,__destruct,__call,__get,__ set等)並提供用例? 什麼是PHP魔術方法(__ -construct,__destruct,__call,__get,__ set等)並提供用例? Apr 03, 2025 am 12:03 AM

PHP的魔法方法有哪些? PHP的魔法方法包括:1.\_\_construct,用於初始化對象;2.\_\_destruct,用於清理資源;3.\_\_call,處理不存在的方法調用;4.\_\_get,實現動態屬性訪問;5.\_\_set,實現動態屬性設置。這些方法在特定情況下自動調用,提升代碼的靈活性和效率。

PHP和Python:比較兩種流行的編程語言 PHP和Python:比較兩種流行的編程語言 Apr 14, 2025 am 12:13 AM

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。