PHP使用swoole編寫簡單的echo服務(wù)器示例
本文實例講述了PHP使用swoole編寫簡單的echo服務(wù)器。分享給大家供大家參考,具體如下:
server.php代碼如下:
<?php class EchoServer { protected $serv = null; public function __construct() { $this->serv = new swoole_server('0.0.0.0', 8888); //配置參數(shù) $this->serv->set(array( 'worker_num' => 4, 'daemonize' => 0, )); //注冊回調(diào)函數(shù) $this->serv->on('start', array($this, 'start')); $this->serv->on('connect', array($this, 'connect')); $this->serv->on('receive', array($this, 'receive')); $this->serv->on('close', array($this, 'close')); //啟動服務(wù) $this->serv->start(); } public function start($serv) { echo "start \n"; } //有客戶端連接時 public function connect($serv, $fd) { echo "connect \n"; $serv->send($fd, "hello \n"); } public function close($serv, $fd) { echo "close \n"; } public function receive($serv, $fd, $from_id, $data) { echo "get message {$fd} : {$data} \n"; //向客戶端發(fā)送信息 $serv->send($fd, $data . "\n"); } } $serv = new EchoServer();
client.php代碼如下:
<?php class EchoClient { protected $client = null; public function __construct() { //注意這里需設(shè)置為異步,不然下面無法設(shè)置事件回調(diào)函數(shù) $this->client = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_ASYNC); $this->client->on('connect', array($this, 'connect')); $this->client->on('receive', array($this, 'receive')); $this->client->on('close', array($this, 'close')); $this->client->on('error', array($this, 'error')); //連接服務(wù)端 $this->client->connect('0.0.0.0', 8888); } public function connect($client) { echo "connect \n"; } public function receive($client, $data) { echo "server send: {$data}"; //向標準輸出寫入數(shù)據(jù) fwrite(STDOUT, "請輸入消息:"); //獲取標準輸入數(shù)據(jù) $msg = trim(fgets(STDIN)); //向服務(wù)端發(fā)送數(shù)據(jù) $client->send($msg); } public function close($client) { echo "close \n"; } public function error($client) { echo "error \n"; } } $cli = new EchoClient();
然后分別運行這兩個腳本
> /data/php56/bin/php server.php > /data/php56/bin/php client.php
運行結(jié)果如下:
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP網(wǎng)絡(luò)編程技巧總結(jié)》、《php socket用法總結(jié)》、《php面向?qū)ο蟪绦蛟O(shè)計入門教程》、《PHP數(shù)據(jù)結(jié)構(gòu)與算法教程》及《php程序設(shè)計算法總結(jié)》
希望本文所述對大家PHP程序設(shè)計有所幫助。
- PHP5.4起內(nèi)置web服務(wù)器使用方法
- phpstorm遠程連接服務(wù)器并實時更新發(fā)布代碼(thinkphp6.0.7)
- PhpStorm連接服務(wù)器并實現(xiàn)自動上傳功能
- php實現(xiàn)的簡單多進程服務(wù)器類完整示例
- 在phpstudy集成環(huán)境下的nginx服務(wù)器下配置url重寫
- php服務(wù)器的系統(tǒng)詳解
- Windows服務(wù)器中PHP如何安裝redis擴展
- PHP如何將圖片文件上傳到另外一臺服務(wù)器上
- 微信小程序上傳圖片到php服務(wù)器的方法
- PHP 內(nèi)置WEB服務(wù)器的簡單使用
相關(guān)文章
php+mysql+jquery實現(xiàn)日歷簽到功能
本文主要介紹了php+mysql+jquery實現(xiàn)日歷簽到功能的過程與步驟,具有很好的參考價值,下面跟著小編一起來看下吧2017-02-02PHP實現(xiàn)redis限制單ip、單用戶的訪問次數(shù)功能示例
這篇文章主要介紹了PHP實現(xiàn)redis限制單ip、單用戶的訪問次數(shù)功能,結(jié)合實例形式分析了php連接redis及獲取、記錄客戶端信息,并限制客戶訪問次數(shù)等操作技巧,需要的朋友可以參考下2018-06-06PHP實現(xiàn)Snowflake生成分布式唯一ID的方法示例
這篇文章主要給大家介紹了關(guān)于PHP實現(xiàn)Snowflake生成分布式唯一ID的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-08-08