我将如何在后台运行 Laravel 5.2 的队列监听器?
Posted
技术标签:
【中文标题】我将如何在后台运行 Laravel 5.2 的队列监听器?【英文标题】:How will I run queue listener of Laravel 5.2 in background? 【发布时间】:2016-12-31 02:55:22 【问题描述】:在我的项目中,我正在使用数据库队列并使用命令执行此队列
php artisan queue:listen
在作曲家中,它正在工作。但是在我的 Windows 服务器中,有很多项目使用队列,所以打开了很多 Composer 的窗口。这很不方便。这是否可以在不打开作曲家窗口的情况下在后台运行此命令?
【问题讨论】:
您可以创建一个脚本来运行这些命令。并使用 cron 运行此脚本 这能回答你的问题吗? How to keep Laravel Queue system running on server 【参考方案1】:您可以使用该命令,但它只能在您注销或重新启动后才能使用
nohup php artisan queue:work --daemon &
尾随的和号 (&) 导致进程在后台启动,因此您可以继续使用 shell 而不必等到脚本完成。
见nohup
nohup - 运行不受挂断影响的命令,输出到非 tty
这会将信息输出到您运行命令的目录中名为 nohup.out 的文件中。如果您对输出不感兴趣,您可以将 stdout 和 stderr 重定向到 /dev/null,或者类似地您可以将其输出到您的普通 laravel 日志中。例如
nohup php artisan queue:work --daemon > /dev/null 2>&1 &
nohup php artisan queue:work --daemon > app/storage/logs/laravel.log &
但您还应该使用Supervisord 之类的东西来确保服务保持运行并在崩溃/失败后重新启动。
运行队列:用 supervisord 监听
supervisord 是一个 *nix 实用程序,用于监视和控制以下进程,它是 /etc/supervisord.conf 的一部分,运行良好。
用于 queue:listen 的 supervisord.conf 部分
[program:l5beauty-queue-listen]
command=php /PATH/TO/l5beauty/artisan queue:listen
user=NONROOT-USER
process_name=%(program_name)s_%(process_num)d
directory=/PATH/TO/l5beauty
stdout_logfile=/PATH/TO/l5beauty/storage/logs/supervisord.log
redirect_stderr=true
numprocs=1
您需要替换 /PATH/TO/ 以匹配您的本地安装。同样,用户设置对于您的安装也是唯一的。
【讨论】:
感谢您的回复。我正在使用 Windows 服务器。如何在 windows server 上使用上述命令? 从这里复制和粘贴好:***.com/questions/28623001/… 查看文档。以上是关于我将如何在后台运行 Laravel 5.2 的队列监听器?的主要内容,如果未能解决你的问题,请参考以下文章