PHP Swoole 是一個異步、高性能的網絡通信框架,被廣泛應用于 WebSocket、TCP/UDP 等通信領域。它的特點是基于 PHP 語言,無需第三方擴展,可以直接開發高并發應用,支持協程等優秀特性。下面我們來看幾個使用 PHP Swoole 的實例。
### HTTP 服務器
以下代碼為一個簡單的 HTTP 服務器示例,監聽端口為 9501,在訪問時直接返回統一的內容。
### WebSocket 服務器
以下代碼為一個簡單的 WebSocket 服務器示例,監聽端口為 9502,在每次客戶端請求時返回當前時間戳。
### TCP 服務器
以下代碼為一個簡單的 TCP 服務器示例,監聽端口為 9503,在客戶端連接時發送歡迎信息,每次客戶端消息到達時返回相同消息。
### 協程化
以下代碼為一個簡單的協程示例,創建了十萬個協程進行并發訪問,輸出完成時間以及協程總數。
通過上述實例,我們可以從不同層面了解 PHP Swoole 的使用方法,同時也感受到了協程的強大。無論是開發 HTTP、WebSocket、TCP 服務器,還是進行并發處理,PHP Swoole 都有著良好的表現。
### HTTP 服務器
以下代碼為一個簡單的 HTTP 服務器示例,監聽端口為 9501,在訪問時直接返回統一的內容。
php <?php $http = new swoole_http_server("0.0.0.0", 9501, SWOOLE_BASE); $http->on("request", function ($request, $response) { $response->header("Content-Type", "text/html; charset=utf-8"); $response->end("Hello, Swoole!"); }); $http->start(); ?>
### WebSocket 服務器
以下代碼為一個簡單的 WebSocket 服務器示例,監聽端口為 9502,在每次客戶端請求時返回當前時間戳。
php <?php $ws = new swoole_websocket_server("0.0.0.0", 9502, SWOOLE_BASE); $ws->on("open", function ($ws, $request) { $ws->push($request->fd, "Welcome to Swoole!"); }); $ws->on("message", function ($ws, $frame) { $ws->push($frame->fd, date("Y-m-d H:i:s")); }); $ws->on("close", function ($ws, $fd) { echo "Client {$fd} closed\n"; }); $ws->start(); ?>
### TCP 服務器
以下代碼為一個簡單的 TCP 服務器示例,監聽端口為 9503,在客戶端連接時發送歡迎信息,每次客戶端消息到達時返回相同消息。
php <?php $server = new swoole_server("0.0.0.0", 9503, SWOOLE_PROCESS); $server->on("connect", function ($server, $fd) { $server->send($fd, "Welcome to Swoole!\n"); }); $server->on("receive", function ($server, $fd, $reactor_id, $data) { $server->send($fd, "Received: " . $data); }); $server->on("close", function ($server, $fd) { echo "Client {$fd} closed\n"; }); $server->start(); ?>
### 協程化
以下代碼為一個簡單的協程示例,創建了十萬個協程進行并發訪問,輸出完成時間以及協程總數。
php <?php co::set(['hook_flags' => SWOOLE_HOOK_TCP]); //開啟協程 Hook $start = microtime(true); $counter = 0; for ($i = 1; $i <= 100000; $i++) { Coroutine\run(function () use (&$counter) { // 自增協程計數 $counter++; // 執行協程任務 co::sleep(0.001); }); } echo "Coroutine counter: " . $counter . "\n"; echo "Total time: " . (microtime(true) - $start) . "s\n"; ?>
通過上述實例,我們可以從不同層面了解 PHP Swoole 的使用方法,同時也感受到了協程的強大。無論是開發 HTTP、WebSocket、TCP 服務器,還是進行并發處理,PHP Swoole 都有著良好的表現。
下一篇json報錯句號