在我的项目中,我使用数据库队列并使用命令
执行此队列 php artisan queue:listen
在作曲家中,它正在发挥作用。但是在我的Windows服务器中,有许多项目使用队列,因此很多窗口的作曲家都是打开的。这很不方便。这可以在没有打开作曲家窗口的情况下在后台运行此命令吗?
答案 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 /以匹配您的本地安装。同样,用户设置对您的安装也是唯一的。