Laravel使用Supervisor管理linux自动队列

队列处理器 & 部署#
因为队列处理器都是 「常驻」 进程,如果代码改变而队列处理器没有重启,他们是不能应用新代码的。所以最简单的方式就是重新部署过程中要重启队列处理器。你可以很优雅地
只输入 queue:restart 来重启所有队列处理器。

php artisan queue:restart

这个命令将会告诉所有队列处理器在执行完当前任务后结束进程,这样才不会有任务丢失。因为队列处理器在执行 queue:restart 命令时对结束进程,你应该运行一个进程管理器,
比如 Supervisor 来自动重新启动队列处理器

Supervisor 是一个 Linux 操作系统上的进程监控软件,它会在 queue:listen 或 queue:work 命令发生失败后自动重启它们。在 Ubuntu 安装 Supervisor,可以用以下命令:

sudo apt-get install supervisor

配置 Supervisor#
Supervisor 的配置文件一般是放在 /etc/supervisor/conf.d 目录下。在这个目录中你可以创建任意数量的配置文件来要求 Supervisor 怎样监控你的进程。例如我们创建一个
laravel-queue-worker.conf 来启动与监控一个queue:work进程:

[program:laravel-queue-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /home/vagrant/www/ucenter/artisan queue:work
autostart=true
autorestart=true
user=forge
numprocs=8
redirect_stderr=true
user=vagrant
stdout_logfile=/home/vagrant/www/ucenter/worker.log

线上环境把路径和user修改成对应的

启动 Supervisor#
当这个配置文件被创建后,你需要更新 Supervisor 的配置,并用以下命令来启动该进程:

1 sudo supervisorctl reread 
ERROR: CANT_REREAD: Invalid user name forge in section 'program:laravel-queue-worker' (file: 
'/etc/supervisor/conf.d/laravel-queue-worker.conf')

若执行reread报错,在conf文件中添加user=vagrant

1 sudo supervisorctl update
2 sudo supervisorctl start laravel-queue-worker:*
vagrant@homestead:/etc/supervisor/conf.d$ vi laravel-queue-worker.conf
vagrant@homestead:/etc/supervisor/conf.d$ sudo supervisorctl reread
laravel-queue-worker: available
vagrant@homestead:/etc/supervisor/conf.d$ sudo supervisorctl update
laravel-queue-worker: added process group
原文地址:https://www.cnblogs.com/yin5th/p/8316605.html