在實現(xiàn)異步任務(wù)過程中,有個需求是for循環(huán)任務(wù)下發(fā)給‘任務(wù)進程服務(wù)端’,那如何判斷所有異步任務(wù)都完成了呢?
我使用了如圖方式:
此中方式可以實現(xiàn)單此請求時正常
但是當我同時多次進行for循環(huán)任務(wù)下發(fā)就不正常了,比如下發(fā)6次任務(wù),他只輸出兩次‘任務(wù)完成’
請問如何實現(xiàn)想要的結(jié)果呢
額,不可以的
我的程序流程是:如圖,每個一級任務(wù)都會循環(huán)下發(fā)15次異步任務(wù),那我連續(xù)下發(fā)6個一級任務(wù),也就是6*15=95個異步任務(wù)。
我如何知道這6個一級任務(wù)其子15個異步任務(wù)完成了呢。
哦,你開始沒描述清楚。
$times 不要用全局變量來記錄,因為每一級任務(wù)都可能會覆蓋這個變量。我覺得把times放到$task_connection對象里來記錄會好一些。因為每個$task_connection都是獨立的,互相不會覆蓋數(shù)據(jù)。
$task_connection->onMessage = function($task_connection, $result){
if (!isset($task_connection->times)) $task_connection->times = 0;
if (++$task_connection->times >= 15) {
echo "任務(wù)完成";
}
};