关闭终端后,使用Laravel 5.6在后台停止队列处理

时间:2019-07-04 14:34:07

标签: linux laravel queue jobs nohup

即使关闭服务器终端,我仍然使用以下命令将队列进程设置为永久执行。但是,一旦我关闭终端,它就会停止。请帮我解决一下这个。如何使其始终在后台运行。 您可以看到我使用了所有的nohup命令,但没有运气。

1) nohup php artisan queue:work --tries=1 </dev/null >/dev/null 2>&1 &
2) nohup php artisan queue:work --tries=1 >/dev/null 2>&1 &
3) nohup php artisan queue:work --daemon > /dev/null 2>&1 &
4) nohup php artisan queue:work > /dev/null 2>&1 &
5) nohup php artisan queue:work --tries=1
6) nohup php artisan queue:listen >/dev/null 2>&1 &

注意:我没有root服务器访问权限。我正在使用从WHM创建的用户。如果有问题,请使用IDK。

2 个答案:

答案 0 :(得分:0)

这是不可能的,当您停止命令或关闭连接时,该过程将停止。

从Laravel文档中获得

  

要保持队列:工作流程在后台永久运行,   您应该使用诸如Supervisor之类的过程监视器来确保   队列工作者不会停止运行。

https://laravel.com/docs/5.8/queues#supervisor-configuration

答案 1 :(得分:0)

转到CPanel-> Cron Jobs页面

并通过添加如下命令创建cron作业:

* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1

别忘了将/ path-to-your-project更改为项目文件夹

它将运行laravel计划的命令。

并将其放入schedule文件中的app/Console/Kernel.php方法中。

$schedule->command('queue:work --daemon')->everyMinute()->withoutOverlapping();