ReactPHP 是一個用於 PHP 事件驅動程式設計的低階函式庫。其核心是一個事件循環,在其之上提供低階實用程序,例如:流抽象、非同步 DNS 解析器、網路用戶端/伺服器、HTTP 用戶端/伺服器以及與進程的交互。第三方庫可以使用這些元件來建立非同步網路客戶端/伺服器等。
<?php
// $ composer require react/http react/socket # install example using Composer
// $ php example.php # run example on command line, requires no additional web server
require __DIR__ . ' /vendor/autoload.php ' ;
$ server = new React Http HttpServer ( function ( Psr Http Message ServerRequestInterface $ request ) {
return React Http Message Response:: plaintext (
" Hello World! n"
);
});
$ socket = new React Socket SocketServer ( ' 127.0.0.1:8080 ' );
$ server -> listen ( $ socket );
echo " Server running at http://127.0.0.1:8080 " . PHP_EOL ;
這個用 ReactPHP 寫的簡單 Web 伺服器會回應“Hello World!”對於每個請求。
ReactPHP 已做好生產準備,並經過來自世界各地各種項目的數百萬次安裝的實際測試。其事件驅動架構使其非常適合處理數百或數千個並發連接、長時間運行的應用程式以及許多其他形式的具有非阻塞 I/O 操作的協作多任務處理的高效網路伺服器和用戶端。 ReactPHP 的特別之處在於其生動的生態系統,其中包含數百個第三方函式庫,可讓您與許多現有系統集成,例如常見的網路服務、資料庫系統和其他第三方 API。
ReactPHP 預設是非阻塞的。使用工人來阻塞 I/O。事件循環基於反應器模式(因此得名),並受到 EventMachine (Ruby)、Twisted (Python) 和 Node.js (V8) 等函式庫的強烈啟發。
您目前正在查看的這個儲存庫主要用作元儲存庫來討論和規劃@ReactPHP 的所有內容。有關每個組件、其文檔和源代碼的更多詳細信息,請參閱下面鏈接的各個組件。
EventLoop ReactPHP 的核心反應器事件循環。閱讀文件
Stream事件驅動的可讀可寫入流,用於 ReactPHP 中的非阻塞 I/O。閱讀文件
Promise Promise/PHP 的實作。閱讀文件
非同步ReactPHP 的非同步實用程式和纖維。閱讀文件
ReactPHP 的非同步套接字、串流純文字 TCP/IP 和安全 TLS 套接字伺服器和用戶端連線。閱讀文件
ReactPHP 的資料封包事件驅動的 UDP 用戶端和伺服器套接字。閱讀文件
ReactPHP 的HTTP事件驅動、串流 HTTP 用戶端和伺服器實作。閱讀文件
DNS ReactPHP 的非同步 DNS 解析器。閱讀文件
快取ReactPHP 的非同步快取。閱讀文件
ChildProcess用來執行子程序的函式庫。閱讀文件
PromiseTimer ReactPHP Promise 函式庫的簡單逾時實作。閱讀文件
PromiseStream Promise-land 和 Stream-land 之間缺少的鏈接,建立在 ReactPHP 之上。閱讀文件
Thruway用於 Autobahn 的 PHP 用戶端和路由器庫以及用於即時應用程式訊息傳遞的 WAMP(Web 應用程式訊息傳遞協定) voryx/Thruway
PPM - PHP 進程管理器PPM 是現代 PHP 應用程式的進程管理器、增壓器和負載平衡器。 php-pm/php-pm
php-ar-drone node-ar-drone 的端口,允許用戶透過 PHP jolicode/php-ar-drone 控制 Parrot AR 無人機
Ratchet非同步 WebSocket 伺服器ratchetphp/Ratchet
PredisAsync基於 ReactPHP nrk/predis-async 建構的 Redis 非同步 PHP 用戶端函式庫
線索/redis-server純 PHP 中的 Redis 伺服器實作 線索/redis-server
我們的 wiki 頁面上還有更多內容 »
Sergey Zhuk涵蓋 ReactPHP 的系列文章:從基礎知識到真正的應用程式範例。謝爾蓋朱克我
Cees-Jan Kiewiet部落格系列介紹了幾個 ReactPHP 元件及其運作方式。部落格.wyrihaximus.net
Loïc Faugeron Super Speed Symfony - ReactPHP。 gnugat.github.io
Marc J. Schmidt將高效能帶入您的 PHP 應用程式(使用 ReactPHP)。馬克施密特網站
Marc Morera當 ReactPHP 遇見 Symfonymedium.com/@apisearch
Christian Lück使用 ReactPHP 突破極限
Jeremy Mikola異步 PHP 與 React
Igor Wiedler事件驅動 PHP
ReactPHP 由一組單獨的元件組成。這意味著您實際上只選擇您需要的元件,而不是安裝「ReactPHP 框架」之類的東西。
該專案的所有穩定組件均遵循 SemVer。安裝這些組件的建議方法是透過 Composer。作曲家新手?
例如,這可能看起來像這樣:
# recommended install: pick required components
composer require react/event-loop react/http
作為替代方案,我們還提供了一個元包,可以一次安裝所有穩定組件。僅建議在快速原型設計時安裝此組件,因為穩定組件清單可能會隨著時間的推移而變化。這個元包可以這樣安裝:
# quick protoyping only: install all stable components
composer require react/react:^1.4
有關更多詳細信息,請查看 ReactPHP 的主頁以獲取快速入門範例和使用詳細資訊。
另請參閱所有 ReactPHP 元件的合併變更日誌,以了解有關版本升級的詳細資訊。
您對 ReactPHP 有疑問並需要協助嗎?別擔心,我們隨時為您提供協助!
第一步,檢查每個組件附帶的詳細文件(請參閱上面每個組件的單獨文件的連結)。如果您發現文件中沒有回答您的問題,那麼它很可能與更多人相關。請隨時將您的問題作為問題提交到相關組件中,以便其他人也可以參與。
您也可以查看我們的官方 Gitter 聊天室。大多數參與此專案的人員都可以在這個聊天室中找到答案,因此許多問題可以在幾分鐘到幾個小時內得到解答。我們還使用此聊天室來宣布所有新版本和正在進行的開發工作,因此請考慮在此聊天室中停留更長的時間。
另請在 Twitter 上關注@reactphp 以獲取更新。我們主要將其用於值得注意的、更大的更新,並讓社區了解正在進行的開發工作的最新情況。如果您有任何要分享的內容,您可以隨時使用#reactphp
主題標籤!
我們是一個非常開放的項目,我們更喜歡盡可能進行公共溝通,以便更多的人可以參與並幫助獲得最佳的解決方案。同時,我們意識到有些事情最好私下解決。無論您只是想表達感謝、回報安全問題還是想幫助贊助某個功能開發,您都可以透過發送電子郵件至[email protected]
私下聯繫核心團隊。請記住,我們是一個由志工組成的小團隊,我們會盡力支持任何伸出援手的人。
你想支持ReactPHP嗎?驚人的!讓我們先讓世界知道為什麼您認為 ReactPHP 很棒,並嘗試幫助其他人加入!發送推文、撰寫部落格文章、在本地用戶群組或會議上發表演講,甚至寫一本書。您可以透過多種方式提供協助。您可以隨時私下聯繫我們,並透過我們的支援管道幫助其他人。謝謝你!
要執行測試套件,您首先需要複製此儲存庫,然後透過 Composer 安裝所有相依性:
composer install
要運行測試套件,請前往專案根目錄並運行:
vendor/bin/phpunit
該測試套件還包含許多依賴穩定網路連線的功能整合測試。由於整合測試數量龐大,在 CI 運行期間預設會跳過這些測試。如果您也不想運行這些,可以簡單地跳過它們,如下所示:
vendor/bin/phpunit --exclude-group internet
麻省理工學院,請參閱許可證。