在10秒间隔队列

时间:2016-06-23 21:06:38

标签: php laravel cron queue

所以基本上我无法在其他地方找到答案。我在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);
        }
    }
}

任何解决方案?

0 个答案:

没有答案