Есть ли в Laravel такая функция, как безOverlapping (), но типа «Не перекрывать, если запущено 5 команд»? - PullRequest
0 голосов
/ 24 мая 2019

Я использую планировщик Laravel для запуска некоторых команд, но иногда команда занимает много времени, и я не хочу быть уверенным, что она не рассылает команды на мой сервер, поэтому я пытаюсь как-то выполнить «Don»не работает, если 5 работает атм.

1 Ответ

0 голосов
/ 24 мая 2019

Будьте умны при выборе частоты:

Вы можете определить частоту запланированного задания, используя несколько методов. См. Параметры частоты расписания

-> everyMinute (); Запускать задание каждую минуту

-> everyFiveMinutes (); Запускать задание каждые пять минут

-> everyTenMinutes (); Запускать задание каждые десять минут ...

Эти методы могут быть объединены с дополнительными ограничениями для создания еще более точно настроенных расписаний, которые запускаются только в определенные дни недели:

-> дни недели (); Ограничить задачу днями

-> выходные (); Ограничьте задачу выходными.

Вы можете подключить цепь, как показано ниже:

$schedule->call(function () {
    //
})->weekly()->mondays()->at('13:00');

Так что вы должны тщательно решить, как и когда вы хотите запускать свои команды. Не запускайте каждую команду с одинаковым интервалом.

Наконец:

Если вы все еще не можете избежать одновременного выполнения нескольких команд, то вы можете указать, что они будут выполняться без наложения (т.е. не одновременно):

$schedule->command('emails:send')->withoutOverlapping();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...