刚开始接触swoole的同学可能不太好理解 reactor, worker, taskworker之间的额关系预计作用空间。我在这里以下面的例子来做说明。
对照swoole结构图:https://blog.csdn.net/raoxiaoya/article/details/100176783
1、reactor是管理tcp连接的,并向worker进程投递请求,投递方式根据 dispatch_mode 配置。
2、worker进程可以自己处理任务,也可以投递给taskworker进程来做。
onConnet:在worker进程中回调
onReceive:在worker进程中回调
onTask:在task_worker进程内被调用
onFinish:在worker进程中回调
onWorkerStart:Worker进程/Task进程启动时发生
$server->on('connect', function($server, $fd){
echo 'connect successful ...'.PHP_EOL;
});
$server->on('receive', function($server, $fd, $reactorId, $data){
// 投递task任务
$server->task($data);
// 返回客户端信息
$server->send($fd, "发送成功".PHP_EOL);
});
// 接收到task任务
$server->on('task', function($server, $task_id, $worker_Id, $data){
// 执行完通知Worker进程
$server->finish($data);
});
// 接收来自task进程的通知
$server->on('finish', function($server, $task_id, $data){
});