Планировщик задач Laravel не работает

Я попытался запустить планировщик в Laravel 5.3 с помощью следующего кода в App/Console/Kernel.php

protected function schedule(Schedule $schedule)
{
    $schedule->command('queue:work')->everyMinute()->withoutOverlapping();
}

и установите задания cron на моем общем хостинге следующим образом:

* * * * * php /home/username/public_html/laravel/artisan schedule:run >> /dev/null 2>&1

но это не работает в моем общем хостинге

Я использовал драйвер базы данных для своей очереди, и попытки все еще 0, то есть очередь не выполняется планировщиком задач.

Кто-нибудь может помочь мне с этой проблемой?

3 ответа

Решение

Несколько вещей, которые вы можете проверить:

Очередь: работа

Обратите внимание, что после запуска команды queue: work она будет продолжаться до тех пор, пока она не будет остановлена ​​вручную или вы не закроете свой терминал. https://laravel.com/docs/5.3/queues

Вы уверены, что хотите запускать новый процесс с планировщиком каждую минуту?

планировщик питания

artisan schedule: команда run должна запускаться каждую минуту, чтобы планировщик работал. Это может быть сделано с помощью cron: https://laravel.com/docs/5.3/scheduling

Эта ссылка может быть полезна для настройки планировщика. Я сделал с этим. Пожалуйста, попробуйте.

https://www.sitepoint.com/managing-cronjobs-with-laravel/

Я использую виртуальный хостинг на A2hosting, и команда, которая работает для меня это

nohup php artisan queue:work &

Команда & гарантирует, что команда продолжит работу, и с nohup процесс не будет остановлен, даже если вы выйдете или закроете терминал.

ОБНОВЛЕНИЕ: Если вы можете запускать команды оболочки из PHP, это решение, которое я в итоге реализовал. Через 3 дня все работает как положено. Только один экземпляр queue:work работает, и он только перезапускается, когда он остановился. Расписание работает каждую минуту.

if ( ! strstr(shell_exec('ps xf'), 'php artisan queue:work'))
    {
        $schedule->command('queue:work')->everyMinute();
    }

Вы также можете искать на queue:work вместо php artisan queue:work, Бежать shell_exec('ps xf') в повозке и посмотри что получишь.

Другие вопросы по тегам