在实现异步任务过程中,有个需求是for循环任务下发给‘任务进程服务端’,那如何判断所有异步任务都完成了呢?
我使用了如图方式: 此中方式可以实现单此请求时正常
但是当我同时多次进行for循环任务下发就不正常了,比如下发6次任务,他只输出两次‘任务完成’
请问如何实现想要的结果呢
把 if ($times >= 15) 这个判断去掉就可以输出6次了
if ($times >= 15)
额,不可以的 我的程序流程是:如图,每个一级任务都会循环下发15次异步任务,那我连续下发6个一级任务,也就是6*15=95个异步任务。 我如何知道这6个一级任务其子15个异步任务完成了呢。
哦,你开始没描述清楚。 $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 "任务完成"; } };
把
if ($times >= 15)
这个判断去掉就可以输出6次了额,不可以的
我的程序流程是:如图,每个一级任务都会循环下发15次异步任务,那我连续下发6个一级任务,也就是6*15=95个异步任务。
我如何知道这6个一级任务其子15个异步任务完成了呢。
哦,你开始没描述清楚。
$times 不要用全局变量来记录,因为每一级任务都可能会覆盖这个变量。我觉得把times放到$task_connection对象里来记录会好一些。因为每个$task_connection都是独立的,互相不会覆盖数据。