3

我尝试使用以下代码在 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,即任务调度程序未执行队列。

任何人都可以帮我解决这个问题吗?

4

3 回答 3

1

您可能需要检查的几件事:

队列:工作

请注意,一旦 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

于 2017-02-06T02:00:17.107 回答
0

我在 A2hosting 上使用共享主机,对我有用的命令是

nohup php artisan queue:work &

& 确保命令继续运行,并且 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'),看看你得到了什么。

于 2017-04-04T14:49:13.713 回答
0

此链接可能有助于设置调度程序。我已经完成了。请尝试。

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

于 2017-02-06T15:55:01.973 回答