Swoole 基本例項建立
構建一個Swoole基本例項
下面貼一個基本的基於swoole的echo伺服器
// Serverclass Server{ private $serv; public function __construct() { $this->serv = new swoole_server("0.0.0.0", 9501); $this->serv->set(array( 'worker_num' => 8, 'daemonize' => false, 'max_request' => 10000, 'dispatch_mode' => 2, 'debug_mode'=> 1 )); $this->serv->on('Start', array($this, 'onStart')); $this->serv->on('Connect', array($this, 'onConnect')); $this->serv->on('Receive', array($this, 'onReceive')); $this->serv->on('Close', array($this, 'onClose')); $this->serv->start(); } public function onStart( $serv ) { echo "Start\n"; } public function onConnect( $serv, $fd, $from_id ) { $serv->send( $fd, "Hello {$fd}!" ); } public function onReceive( swoole_server $serv, $fd, $from_id, $data ) { echo "Get Message From Client {$fd}:{$data}\n"; } public function onClose( $serv, $fd, $from_id ) { echo "Client {$fd} close connection\n"; }}// 啟動伺服器$server = new Server();
從程式碼中可以看出,建立一個swoole_server基本分三步: 1.通過建構函式建立swoole_server物件 2.呼叫 set函式設定swoole_server的相關配置選項 3.呼叫 on函式設定相關回撥函式 關於set配置選項以及on回撥函式的具體說明,請參考我整理的swoole文件( )
這裡只給出簡單介紹。onStart回撥在server執行前被呼叫,onConnect在有新客戶端連線過來時被呼叫,onReceive函式在有資料傳送到server時被呼叫,onClose在有客戶端斷開連線時被呼叫。這裡就可以大概看出如何使用swoole:在onConnect處監聽新的連線;在onReceive處接收資料並處理,然後可以呼叫send函式將處理結果傳送出去;在onClose處處理客戶端下線的事件。
下面貼出客戶端的程式碼:
<?phpclass Client{ private $client; public function __construct() { $this->client = new swoole_client(SWOOLE_SOCK_TCP); } public function connect() { if( !$this->client->connect("127.0.0.1", 9501 , 1) ) { echo "Error: {$fp->errMsg}[{$fp->errCode}]\n"; } $message = $this->client->recv(); echo "Get Message From Server:{$message}\n"; fwrite(STDOUT, "請輸入訊息:"); $msg = trim(fgets(STDIN)); $this->client->send( $msg ); }}$client = new Client();$client->connect();
這裡,通過swoole_client建立一個基於TCP的客戶端例項,並呼叫connect函式向指定的IP及埠發起連線請求。隨後即可通過recv()和send()兩個函式來接收和傳送請求。需要注意的是,這裡我使用了預設的同步阻塞客戶端,因此recv和send操作都會產生網路阻塞。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70018476/viewspace-2902539/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- mysql多版本例項安裝MySql
- Swoole server配置選項Server
- Swoole v4.5.7 版本釋出,新增--enable-swoole-json編譯選項JSON編譯
- Laravel 中使用 swoole 專案實戰開發案例一 (建立 swoole 和前端通訊)Laravel前端
- swoole 協程原始碼解讀 (協程的建立)原始碼
- Swoole 系列基礎之一(多程式)
- 基於 swoole 的laravel 聊天平臺Laravel
- 基於 swoole 下 非同步佇列 API非同步佇列API
- Just for fun——基於Swoole做個小框架框架
- 基於 Swoole 搭建 WebSocket 服務詳解Web
- Laravel 2.2 建立 Application 例項LaravelAPP
- java反射方式建立例項Java反射
- 基於 swoole 協程的 MySQL 連線池MySql
- JKDYAF - V2.0.0 基於 YAF + SWOOLE APi框架API框架
- JkdYaf - 基於 YAF + SWOOLE 高效能API框架API框架
- 基於swoole的mysql連線池實現MySql
- 深挖Openstack Nova - 例項建立(2)
- 深挖Openstack Nova - 例項建立(3)
- 深挖Openstack Nova - 例項建立(4)
- 2.4.6 Step 5: (Windows)建立例項Windows
- frida 建立一個ArrayList例項
- OpenStack建立Win10例項Win10
- Swoole 原始碼分析——基礎模組之 Pipe 管道原始碼
- 基於 swoole 的 websocket 服務一:狀態同步Web
- JavaScript建立物件方法例項小結JavaScript物件
- openstack命令建立雲主機例項
- Spring中用註解建立bean例項SpringBean
- SQLServer 物件建立注意事項之dboSQLServer物件
- php swoolePHP
- Swoole 教程
- 基於 swoole擴充套件 的即時通訊 im套件
- Light-PHP 基於 swoole 的高效能 PHP 框架PHP框架
- 基於Prometheus+Grafana監控Laravel+Swoole應用PrometheusGrafanaLaravel
- 基於 swoole 的 websocket 服務實現狀態同步Web
- swoole 之建立一個 MySQL 連線池 學習分享記錄 [持續更新]MySql
- python中類的建立和例項化Python
- 使用PullTube mac時如何建立重複項Mac
- JS 建立例項物件的四種模式JS物件模式