Я попытался запустить планировщик в 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, то есть очередь не выполняется планировщиком задач.
Кто-нибудь может помочь мне с этой проблемой?
Несколько вещей, которые вы можете проверить:
Очередь: работа
Обратите внимание, что после запуска команды queue: work она продолжит
запускать до тех пор, пока он не остановится вручную или не закроете свой терминал.
https://laravel.com/docs/5.3/queues#running-the-queue-worker
Вы уверены, что хотите запускать новый процесс с планировщиком каждую минуту?
планировщик питания
artisan schedule: команда run должна запускаться каждую минуту, чтобы планировщик работал. Это может быть сделано с помощью cron: https://laravel.com/docs/5.3/scheduling#introduction
Эта ссылка может быть полезна для настройки планировщика. Я сделал с этим. Пожалуйста, попробуйте.
Я использую виртуальный хостинг на 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')
в повозке и посмотри что получишь.