父进程如何知道子进程全部结束(或者是:如何判断所有异步结束)

0

在实现异步任务过程中,有个需求是for循环任务下发给‘任务进程服务端’,那如何判断所有异步任务都完成了呢?


我使用了如图方式:
截图
此中方式可以实现单此请求时正常


但是当我同时多次进行for循环任务下发就不正常了,比如下发6次任务,他只输出两次‘任务完成’


请问如何实现想要的结果呢

已邀请:

six

赞同来自:

if ($times >= 15)  这个判断去掉就可以输出6次了

eyunzhu

赞同来自:

额,不可以的
我的程序流程是:如图,每个一级任务都会循环下发15次异步任务,那我连续下发6个一级任务,也就是6*15=95个异步任务。
我如何知道这6个一级任务其子15个异步任务完成了呢。

six

赞同来自:

哦,你开始没描述清楚。
$times 不要用全局变量来记录,因为每一级任务都可能会覆盖这个变量。我觉得把times放到$task_connection对象里来记录会好一些。因为每个$task_connection都是独立的,互相不会覆盖数据。


$task_connection->onMessage = function($task_connection, $result){
if (!isset($task_connection->times)) $task_connection->times = 0;
if (++$task_connection->times >= 15) {
echo "任务完成";
}
};

要回复问题请先登录注册