即使关闭服务器终端,我仍然使用以下命令将队列进程设置为永久执行。但是,一旦我关闭终端,它就会停止。请帮我解决一下这个。如何使其始终在后台运行。 您可以看到我使用了所有的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。
答案 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();