我需要为一个可以达到数千个项目的列表运行一个任务。
为了避免长时间运行单个作业,我创建了一个作业来对所有项目进行排队。
问题是我需要在该队列完成之前和之后运行另一个任务。
我看到的解决方案是使用延迟:
$schedule->job(new \App\Jobs\PauseSystem()) ->hourly('00:01');
$schedule->job(new \App\Jobs\EnqueueAllItems()) ->hourly('00:02'); // adds all items as separated job in a queue
$schedule->job(new \App\Jobs\ReopenSystem()) ->hourly('55:00');
这样我就有时间00:02确保55:00所有项目都已完成。
它看起来不安全,可能会导致工作重叠。
在队列完成所有作业后,有没有更安全的方法来运行任务?
智慧大石