Есть ли способ зациклить планировщик задач?

Я использую планирование задач Laravel и собираю данные из группы URL в цикле for. Вот почему я не знаю точно, когда закончится один цикл. Я пытался настроить цикл в ядре schedule() метод, как указано в этом вопрос но это, кажется, не работает эффективно.

protected function schedule(Schedule $schedule)
{
$schedule->command('catalog:update')->everyMinute();
sleep(5);
$schedule->command('catalog:update')->everyMinute();
sleep(5);
}

Чего я хочу добиться, так это определить, когда задача выполнена, и запустить ее снова соответственно. Как создание бесконечного цикла, но они не должны пересекаться, потому что, по-моему, это не позволит завершить предыдущую очистку (я прав?).

Поэтому я хочу что-то вроде:

protected function schedule(Schedule $schedule)
{
$schedule->command('catalog:update');

// Detect when completed {
// run it again. Detect when completed again, etc as a loop.
//}

}

0

Решение

Вы не можете цикл в методе расписания. Все, что предполагается сделать, это определить расписание cron. Фактическая команда не выполняется внутри метода расписания.

Вы можете заставить команду выполняться каждую минуту и ​​установить, чтобы она не перекрывалась. Таким образом, он будет пытаться запустить команду каждую минуту, но пропустит ее, если предыдущая попытка все еще выполняется.

protected function schedule(Schedule $schedule)
{
$schedule->command('catalog:update')->everyMinute()->withoutOverlapping();
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]