我尝试使用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,即任务调度程序不执行该队列。
任何人都可以帮我解决这个问题吗?
答案 0 :(得分:1)
您可能想要检查的一些事项:
<强>队列:工作强>
请注意,一旦queue:work命令启动,它将继续执行 运行直到手动停止或关闭终端。 https://laravel.com/docs/5.3/queues#running-the-queue-worker
您确定要每分钟使用调度程序生成一个新进程吗?
启动调度程序
artisan schedule:需要每分钟运行一次run命令,以便Scheduler工作。这可以通过cron完成:https://laravel.com/docs/5.3/scheduling#introduction
答案 1 :(得分:0)
此链接可能有助于设置计划程序。我已经完成了这件事。请试试。
答案 2 :(得分:0)
我在A2hosting上使用共享主机,对我有用的命令是
nohup php artisan queue:work &
&amp;确保命令保持运行,即使你退出或关闭终端,nohup也不会被杀死。
更新:
如果你可以从PHP运行shell命令,这是我最终实现的解决方案。 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')
,看看你得到了什么。