@vbulash

Как заставить срабатывать Laravel Task Scheduler по заданному расписанию?

Выполняемый код планировщика (app/Console/Kernel.php):

protected function schedule(Schedule $schedule)
    {
		$schedule->call(function () {
			Log::info('Schedule call');
		})->everyFiveMinutes();
    }


Выполнение данной задачи запланировано cron'у. Вывод crontab -l:

* * * * * cd /Users/sampleuser/PhpstormProjects/someproject && php artisan schedule:run >> /dev/null 2>&1


На выходе имеем единожды сработавшую задачу. Лог содержит единственную строку:

[2022-08-27 09:25:00] local.INFO: Schedule call

Никакого повторения каждые 5 минут нет (((
Очень интересный вывод дает php artisan schedule:work

INFO  Running schedule tasks every minute.  

   INFO  No scheduled commands are ready to run.  

  2022-08-27 14:30:00 Running [Callback] ............................ 3ms DONE

   INFO  No scheduled commands are ready to run.  

   INFO  No scheduled commands are ready to run.  

   INFO  No scheduled commands are ready to run.  

   INFO  No scheduled commands are ready to run.  

  2022-08-27 14:35:00 Running [Callback] ............................ 8ms DONE

   INFO  No scheduled commands are ready to run.  

   INFO  No scheduled commands are ready to run.


То есть cron работает нормально, а scheduler - нет
  • Вопрос задан
  • 317 просмотров
Решения вопроса 1
@vbulash Автор вопроса
В конце концов разобрался.
Достаточно запустить фоном:
cd /path/to/project && php artisan schedule:work >> /dev/null 2>&1 &


Такое решение оно только для тестовых / отладочных целей. Не продакшн.

Документация Laravel все же достаточно правильная - task scheduler заработал именно так, как написано в начале это цепочки через schedule:run.
Правда, был один нюанс - cron на Маке не имеет полного доступа к диску (практически никакого не имеет), поэтому для нормальной работы ему нужно дать этот доступ так, как это описано здесь.
Вот после этого cron + schedule:run начал работать как часы.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@vism
2022-08-27 14:35:00 Running [Callback] ............................ 8ms DONE

вот ведь, работает. это у вас лог не работает видимо
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы