我如何在后台运行Laravel 5.2的队列监听器?

时间:2016-08-24 05:54:17

标签: windows laravel laravel-5.2

在我的项目中,我使用数据库队列并使用命令

执行此队列

php artisan queue:listen

在作曲家中,它正在发挥作用。但是在我的Windows服务器中,有许多项目使用队列,因此很多窗口的作曲家都是打开的。这很不方便。这可以在没有打开作曲家窗口的情况下在后台运行此命令吗?

1 个答案:

答案 0 :(得分:2)

你可以使用该命令,但它只会在你注销或重启

之前有效
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的一部分,运行良好。

supervisord.conf的部分队列:listen

[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 /以匹配您的本地安装。同样,用户设置对您的安装也是唯一的。