Swoole學習(七)Swoole之非同步TCP伺服器的建立

OldBoy~發表於2018-01-15

環境:Centos6.4,PHP環境:PHP7

<?php
//建立TCP伺服器
/**
 * $host 是swoole需要監聽的ip,如果要監聽本地,不對外服務,那麼就是127.0.0.1;如果我要監聽外網,比如我本地是192.168.9.155,我可以監聽這個IP,如果本機分配的192.168.9.155的IP,外網在訪問IP的時候,就可以相應對應的TCP服務。當然也可以同時監聽多個IP
 */
/**
 * $port埠號。如果選擇1024以下的埠號,需要root許可權,如果swoole和php沒有root許可權,那就行不通。這裡是9501埠
 */
//其實後面還有兩個引數,一個是mode,一個是socke
//$mode預設是 SWOOLE_PROCESS 多程式方式
//$sock預設是SWOOLE_SOCK_TCP 預設TCP服務
//所以後面的兩個引數可以不填寫

$host = '0.0.0.0';
$port = 9501;
$server = new swoole_server($host, $port); //($host, $port, $mode, $sock)

//此時的TCP伺服器是同步阻塞狀態,下面我們就設定非同步狀態

//設定非同步程式工作數量
$server->set(array('task_worker_num' => 4));

//投遞非同步任務(也就是接收到任務之後,把任務投遞出去)
$server->on('receive', function($server, $fd, $from_id, $data){
    $task_id = $server->task($data); //非同步ID
    echo "非同步ID:" . $task_id . "\n";
});

//處理非同步任務
$server->on('task', function($server, $task_id, $from_id, $data){
    echo "執行非同步ID:" . $task_id;
    $server->finish("$data -> ok");
});
//處理結果
$server->on('finish', function($server, $task_id, $data){
    echo '執行完成'."\n";
});

$server->start();

然後進入終端對應的檔案所在目錄,執行命令(這裡檔名是index7.php)

# php index7.php       //開啟服務
# ps -ajft              //檢視程式狀態

 

開始測試

OK~

 

相關文章