所以基本上我无法在其他地方找到答案。我在Laravel 5.x中遇到了一个问题,我的模型叫做'Bumpers',它可以有一定的cron-time值(比如'每25分钟')。
许多保险杠可以具有相同的cron-time,这意味着在某个时间,许多保险杠可以使用Laravel Scheduler执行。但是,我需要将这些保险杠彼此间隔10秒钟运行。因此,如果在晚上8:00:00触发10个缓冲器,我需要队列以10秒的间隔运行,直到所有缓冲器都被执行完毕。
我尝试将sleep();
添加到$schedule->call(function(){executeStuff(); sleep(10)});
。这有点工作但不幸的是它只适用于不超过60秒的队列,因为然后调度程序再次运行:
// This function is called on "artisan schedule:run"
protected function schedule(Schedule $schedule)
{
// Get only the active bumpers.
$bumpers = Bumper::where('status', 1)->get();
// Register all bumpers through their occurrence value.
foreach ($bumpers as $bumper) {
// Check for member/admin. All other bumpers are neglected.
if ($bumper->user->canBump()) {
$schedule->call(function () use ($bumper) {
sleep(10);
$bumper->post();
})->cron($bumper->occurrence);
}
}
}
任何解决方案?