Laravel任务调度程序不起作用

时间:2017-02-06 00:26:00

标签: php laravel queue laravel-5.3 laravel-scheduler

我尝试使用App/Console/Kernel.php

中的以下代码在laravel 5.3中运行调度程序
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 个答案:

答案 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)

此链接可能有助于设置计划程序。我已经完成了这件事。请试试。

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

答案 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'),看看你得到了什么。