微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在循环中分派链式作业?

如何解决如何在循环中分派链式作业?

我正在尝试在 foreach 循环内分派 Laravel 作业。但问题是,当我在循环内调度作业时,有时它会在作业完成之前排队。我想要的是工作应该一项一项地完成。就像在链方法中发生的一样。但是我如何在 foreach 循环中链接相同的工作?这可能吗?

foreach ($consignments as $consignment) {
     CalculateSingleConsignment::dispatch($consignment,$total_consignments,$i,$user_id,$notify)->onQueue('invoice');
     $i++;
}

解决方法

您可以构造要链接的数组,而不是在循环中分派实际作业:

$jobs = [];
 foreach (array_values($consignments) as $i => $consignment) { 
      $jobs[] = new CalculateSingleConsignment($consignment,$total_consignments,$i,$user_id,$notify);
}
Bus::chain($jobs)->onQueue('invoice')->dispatch()

如果您想使用依赖注入,您可以将作业构建为:

app()->makeWith(CalculateSingleConsignment::class,compact('consignment','total_consignments','i','user_id','notify'));

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。