Возможно ли, что Laravel Scheduler пропускает команды? - PullRequest
0 голосов
/ 04 ноября 2019

У меня есть Kernel.php, имеющий много разных команд, определенных следующим образом:

(Laravel v5.5. *)

<?php

.....

protected function schedule(Schedule $schedule)
{
    $fileCronLog = '/var/log/laravel-scheduler.log';

    $schedule->command('do:something params...')->everyFiveMinutes()->appendOutputTo($fileCronLog);
    $schedule->command('do:something params...')->everyMinute()->appendOutputTo($fileCronLog);
    $schedule->command('do:something params...')->everyMinute()->appendOutputTo($fileCronLog);
    $schedule->command('do:something params...')->everyMinute()->appendOutputTo($fileCronLog);
    $schedule->command('do:something params...')->everyMinute()->appendOutputTo($fileCronLog);
    $schedule->command('do:something params...')->everyMinute()->appendOutputTo($fileCronLog);
    $schedule->command('do:something params...')->everyTenMinutes()->appendOutputTo($fileCronLog);
    $schedule->command('do:something params...')->everyFiveMinutes()->appendOutputTo($fileCronLog);
    $schedule->command('do:something params...')->everyTenMinutes()->appendOutputTo($fileCronLog);
    $schedule->command('do:something params...')->everyThirtyMinutes()->appendOutputTo($fileCronLog);

    .......

Я заметилиногда бывает так, что некоторые процессы / команды вообще не запускаются ...

И это соответствует командам с меньшей частотой, таким как: everyTenMinutes, everyThirtyMinutes .....

Я полагаю, что когда crontab запускает Laravel schedule:run, Laravel, возможно, ставит во внутреннюю очередь все запланированные команды ... и, возможно, первые команды обрабатываются дольше, чем одна минута ... поэтому, когда пришло времякоманда everyTenMinutes время прошло, и Ларавел пропустил выполнение ....

Это так? Или, может быть, Laravel просто через некоторое время откажется от планирования обработки, если перегружен?

Я уже заметил, что Laravel не разветвляет процесс php, а последовательно выполняет их. И в прошлом я решил эту проблему, распараллеливая выполнение некоторых команд непосредственно в crontab ...

Как я могу преодолеть это? Есть ли способ или вариант, который я могу использовать непосредственно на платформе?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...