PHP使用swoole編寫簡單的echo服務(wù)器示例
本文實(shí)例講述了PHP使用swoole編寫簡單的echo服務(wù)器。分享給大家供大家參考,具體如下:
server.php代碼如下:
<?phpclass 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’)); //啟動(dòng)服務(wù) $this->serv->start(); } public function start($serv) { echo 'start n'; } //有客戶端連接時(shí) 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代碼如下:
<?phpclass 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}'; //向標(biāo)準(zhǔn)輸出寫入數(shù)據(jù) fwrite(STDOUT, '請輸入消息:'); //獲取標(biāo)準(zhǔn)輸入數(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();
然后分別運(yùn)行這兩個(gè)腳本
> /data/php56/bin/php server.php> /data/php56/bin/php client.php
運(yùn)行結(jié)果如下:
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP網(wǎng)絡(luò)編程技巧總結(jié)》、《php socket用法總結(jié)》、《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》、《PHP數(shù)據(jù)結(jié)構(gòu)與算法教程》及《php程序設(shè)計(jì)算法總結(jié)》
希望本文所述對大家PHP程序設(shè)計(jì)有所幫助。
相關(guān)文章:
1. 利用promise及參數(shù)解構(gòu)封裝ajax請求的方法2. asp(vbs)Rs.Open和Conn.Execute的詳解和區(qū)別及&H0001的說明3. ASP 信息提示函數(shù)并作返回或者轉(zhuǎn)向4. .NET中l(wèi)ambda表達(dá)式合并問題及解決方法5. PHP設(shè)計(jì)模式中工廠模式深入詳解6. JSP數(shù)據(jù)交互實(shí)現(xiàn)過程解析7. windows服務(wù)器使用IIS時(shí)thinkphp搜索中文無效問題8. ThinkPHP5實(shí)現(xiàn)JWT Token認(rèn)證的過程(親測可用)9. 如何基于Python Matplotlib實(shí)現(xiàn)網(wǎng)格動(dòng)畫10. Ajax實(shí)現(xiàn)表格中信息不刷新頁面進(jìn)行更新數(shù)據(jù)
