【问题标题】:Laravel Queue - Waiting on jobs to finish before dispatching next batchLaravel 队列 - 在调度下一批之前等待作业完成
【发布时间】:2018-11-27 19:46:09
【问题描述】:

我有一个大约需要 7 小时才能完成的同步流程,我正在尝试将其转换为作业以加快速度。问题是我需要确保在派发 step2 作业之前完成 step1 中的所有作业。

我在 Laravel 中使用 Beanstalkd 作为我的队列驱动程序。我想到的一种可能的解决方案是运行一个 while 循环,不断检查队列是否为空,但这并不能保证最后几项工作已经完成。

简而言之,这就是我想要做的事情:

//Step 1
ModelA::chunk(1000,function($rows){
  foreach($rows as $row){
      Dispatch(new JobA($row);
  }
}

//I Need To Make Sure STEP1 is Done Before I Proceed

//Step 2
ModelB::chunk(1000,function($rows){
  foreach($rows as $row){
      Dispatch(new JobB($row);
  }
}

我也愿意以不同的方式做到这一点。

【问题讨论】:

  • 也许 Laravel 的 Job chaining 有用在这种情况下有用吗?
  • @RamyHerrira 我不知道我怎么能把它锁起来。请注意,我希望 for 循环的元素作为作业运行

标签: php laravel queue beanstalkd


【解决方案1】:

Laravel 8 Queue Batch 可能会起作用。 如果没有,试试这个包https://github.com/spatie/async

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-19
    • 2014-07-06
    • 1970-01-01
    • 2016-01-20
    • 1970-01-01
    • 2017-02-15
    • 1970-01-01
    • 2017-07-18
    相关资源
    最近更新 更多