Swoole:面向生產環境的 PHP 非同步網路通訊引擎。
使 PHP 開發人員可以編寫高效能的非同步併發 TCP、UDP、Unix Socket、HTTP,WebSocket 服務。Swoole 可以廣泛應用於網際網路、行動通訊、企業軟體、雲端計算、網路遊戲、物聯網(IOT)、車聯網、智慧家居等領域。 使用 PHP + Swoole 作為網路通訊框架,可以使企業 IT 研發團隊的效率大大提升,更加專注於開發創新產品。
簡介
- Swoole 使用純 C 語言編寫,提供了 PHP 語言的非同步多執行緒伺服器,非同步 TCP/UDP 網路客戶端,非同步 MySQL,非同步 Redis,資料庫連線池,AsyncTask,訊息佇列,毫秒定時器,非同步檔案讀寫,非同步 DNS 查詢。 Swoole 內建了 Http/WebSocket 伺服器端/客戶端、Http 2.0 伺服器端。
- 除了非同步 IO 的支援之外,Swoole 為 PHP 多程式的模式設計了多個併發資料結構和 IPC 通訊機制,可以大大簡化多程式併發程式設計的工作。其中包括了併發原子計數器,併發 HashTable,Channel,Lock,程式間通訊IPC等豐富的功能特性。
- Swoole 2.0 支援了類似 Go 語言的協程,可以使用完全同步的程式碼實現非同步程式。PHP 程式碼無需額外增加任何關鍵詞,底層自動進行協程排程,實現非同步。
實踐第一個小例子(建立一個 TCP 伺服器)
<?php
// 建立物件,監聽本地 1215 埠
$serve = new swoole_server('127.0.0.1', 1215);
// 監聽連線進入事件
$serve->on('connect', function ($serve, $mark) {
echo 'Hello customer' . PHP_EOL;
});
// 監聽資料接收事件
$serve->on('receive', function ($serve, $mark, $from_id, $data) {
$serve->send($mark, 'Server: '.$data);
});
// 監聽關閉
$serve->on('close', function ($serve, $mark) {
echo 'Client: Close' . PHP_EOL;
});
$serve->start();
-
建立一個 PHP 檔案,寫入上面的程式碼。
~ touch swoole-tcp.php ~ vim swoole-tcp.php
-
把小案例跑起來。
~ php swoole-tcp.php ... ...
-
測試我們們的小案例。
~ telnet 127.0.0.1 1215 hello world ... ... telnet> quit
執行一些簡單的命令,嘗試嘗試。
總結
之後還會繼續學習 Swoole,與大家繼續分享它,有趣!但是可能會更新的比較慢哈。
本作品採用《CC 協議》,轉載必須註明作者和本文連結