【swoole】php5.6 swoole(demo)小測試
阿新 • • 發佈:2018-06-12
swoole 異步通信 swoole異步任務隊列 swoole:
網上看到的解釋
“實現實時異步任務隊列;
PHP的異步、並行、高性能網絡通信引擎,使用純C語言編寫,提供了PHP語言的異步多線程服務器,異步TCP/UDP網絡客戶端,異步MySQL,異步Redis,數據庫連接池,AsyncTask,消息隊列,毫秒定時器,異步文件讀寫,異步DNS查詢。 Swoole內置了Http/WebSocket服務器端/客戶端、Http2.0服務器端。”
相關文檔地址:https://wiki.swoole.com/wiki/page/6.html
剛接觸swoole的時候是懵的狀態,然後看demo自己試著調試了一下:
網上看到的解釋
“實現實時異步任務隊列;
PHP的異步、並行、高性能網絡通信引擎,使用純C語言編寫,提供了PHP語言的異步多線程服務器,異步TCP/UDP網絡客戶端,異步MySQL,異步Redis,數據庫連接池,AsyncTask,消息隊列,毫秒定時器,異步文件讀寫,異步DNS查詢。 Swoole內置了Http/WebSocket服務器端/客戶端、Http2.0服務器端。”
相關文檔地址:https://wiki.swoole.com/wiki/page/6.html
剛接觸swoole的時候是懵的狀態,然後看demo自己試著調試了一下:
<?php //server.php 服務端 $serv = new swoole_server("0.0.0.0", 4001);//本地的 沒被占用的端口 //設置異步任務的工作進程數量 $serv->set(array(‘task_worker_num‘ => 4));//一開始設置了4個,然而我測試的時候並沒有用這麽多 //接收客戶端發來的數據 $serv->on(‘receive‘, function($serv, $fd, $from_id, $data) { //投遞異步任務 $serv->send($fd, ‘Swoole: ‘.$data.‘測試數據‘);//發送回客戶端 $task_id = $serv->task($data);//繼續向服務端發送(執行異步任務) echo "receive" . $task_id;//當前的作業號 }); //處理異步任務 $serv->on(‘task‘, function ($serv, $task_id, $from_id, $data) { sendScore($data);//自己寫的方法 處理數據 //返回任務執行的結果 $serv->finish($data); }); //處理異步任務的結果 $serv->on(‘finish‘, function ($serv, $task_id, $data) { echo "finish".$task_id;//任務結束標誌 }); $serv->start(); //自己寫的測試方法 function sendScore($data){ //獲取到$data //$arr = json_decode($data,true); //判斷數據是否異常 echo ‘判斷數據是否異常(中間層的異步執行)‘; return true; } <?php //client.php 客戶端 $client = new swoole_client(SWOOLE_SOCK_TCP); if (!$client->connect(‘0.0.0.0‘, 4001, -1)) { exit("connect failed. Error: {$client->errCode}\n"); } $client->send(‘hello lin‘);//客戶端發送數據給服務端 echo $client->recv();//接收服務端傳回來的 $client->close();
先執行server.php,然後執行client.php
當server開始跑的時候,client發送消息,server開始處理,client接收服務端的返回值,服務端記錄輸出接收和完成的任務。
這才是剛剛開始......下面打算做一個聊天室之類的練手,如果上面有哪裏寫的不對的.....以後回來再更新~
【swoole】php5.6 swoole(demo)小測試