项目采用GateWayWorker框架,如果需要2个异步任务去执行耗时操作的话,是不是要建3个实例,A实例接数据,B C实例跑任务,那A实例是通过AsyncTcpConnection去链接B C实例吗,B C实例中的任务结果该如何返回?
看了手册中的例子假如B 实例
$task_worker->onMessage = function($connection, $task_data)
{
// 假设发来的是json数据
$task_data = json_decode($task_data, true);
// 根据task_data处理相应的任务逻辑.... 得到结果,这里省略....
$task_result = ......
// 发送结果
$connection->send(json_encode($task_result));
};
A实例中onMessage回调中要如何接收task_result
$task_connection->onMessage = function($task_connection, $task_result)
{
// 结果
var_dump($task_result);
// 获得结果后记得关闭链接
$task_connection->close();
};
这样不行的,接收不到结果,还是原本就不是这样用的
假设你们的GatewayWorker项目是A,那么建立一个workerman实例B即可,B可以处理多种业务的。
流程就是利用AysncTcpConnection发起一步连接,发送任务,异步等待结果。参考手册就行。
感谢解答!!!您的意思就是单独运行一个workerman实例 然后GW通过AysncTcpConnection来和这个workerman实例来通讯,然后在workerman里面来处理不同的任务是吗
对
@1:谢谢老大