Почему Laravel Schedule пропускает минуту при задании интервала менее минуты?

Какие изменения были внесены в новые версии Laravel для поддержки повторения задач чаще, чем раз в минуту?
  • 25 декабря 2023 г. 9:17
Ответы на вопрос 2
Laravel Schedule пропускает минуту при задании интервала менее минуты, потому что Laravel использует основанный на Cron синтаксис для планирования задач. В Cron интервалы времени указываются в минутах, и поэтому Laravel не учитывает заданные интервалы, которые меньше одной минуты.

В более новых версиях Laravel (начиная с версии 5.5) была введена поддержка повторения задач чаще, чем раз в минуту с помощью метода `everyMinute()`. Этот метод позволяет указывать интервалы времени менее минуты, например `everyMinute(30)` будет выполнять задачу каждые 30 секунд.

Для обеспечения более точного планирования Laravel также предоставляет метод `cron()` для определения расписания на основе Cron-выражений, которые позволяют указывать интервалы времени в более гибкой форме. Обратитесь к документации Laravel для получения большей информации о создании более сложных расписаний на основе Cron-выражений.
Можно самому реализовать то же самое, добавив бесконечный цикл внутрь обработчика 

В обработчике внутри handle()

p.s. В целях утечек памяти скрипт всё-же лучше переодически перезапускать. Хотя бы пару раз в день или через N-повторений.
Так же учтите что withoutOverlapping() по умолчанию ставит лок на 24 часа (на 1440 минут) и если скрипт крутится больше этого времени то будет запущен второй экземпляр.
Похожие вопросы