tp5.1 swoole 實現異步處理


客戶端請求:
<?php
namespace app\index\controller;

class Index
{
public function index()
{
$client = new \swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_SYNC);
$ret = $client->connect("192.168.10.10", 9502);
if(empty($ret)) {
echo 'error!connect to swoole_server failed';
} else {
dump('ccc');
$client->send('blue');//這里只是簡單的實現了發送的內容
}

echo 'success';
  }
}

服務端異步處理:
<?php
/**
* Created by PhpStorm.
* Date: 2019/10/30
* Time: 9:54
*/
namespace app\index\controller;

use think\swoole\Server;

class Swoole extends Server
{
protected $host = '0.0.0.0';
protected $port = 9502;
protected $serverType = 'tcp';
protected $option = [
'worker_num'=> 4,
'daemonize' => false,
'backlog' => 128,
'task_worker_num' => 4, //任務工作進程
];


public function onConnect($serv, $fd)
{
echo "server: handshake success with fd{$fd}\n";
}


public function onTask($serv, $task_id, $from_id, $data)
{
echo "New AsyncTask[id=$task_id]".PHP_EOL;
//返回任務執行的結果
sleep(5);
$serv->finish("$data -> OK");
}

public function onFinish($serv, $task_id, $data)
{
echo "AsyncTask[$task_id] Finish: $data".PHP_EOL;
}

//接收客戶端發送的數據
  public function onReceive($server, $fd, $from_id, $data)
{
$task_id = $server->task($data);
echo "開始投遞異步任務 id=$task_id\n";
//$server->send($fd, 'Swoole: '.$data);
}

public function onClose($serv, $fd)
{

}


}

啟動服務 :php index.php index/Swoole/start


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM