我有一个同步进程,大约需要7个小时才能完成,我正试图将其转换为作业以加快速度。问题是,在发送第2步作业之前,我需要确保第1步中的所有作业都已完成。
我在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 8队列批处理可以工作。如果没有,请尝试此程序包https://github.com/spatie/async