通过supervisor管理laravel队列任务守护进程
通过supervisor管理laravel队列任务守护进程
背景:laravel队列,在调试使用时可以使用php artisan queue:work来启用队列,但是实际项目部署后,需要通过守护进程一直启动队列,在这使用 supervisor 来管理laravel队列守护进程,并且可以自动重启队列
- 安装supervisor
# mac 安装supervisor
brew install supervisor
- supervisor的配置文件目录
/usr/local/etc/supervisor.conf
- 创建配置文件目录:
# 类似于nginx配置文件中的services目录,一个项目使用一个配置文件,这个目录就是存放所有配置文件的地方,需要手动创建一下
mkdir /usr/local/etc/supervisor.d
- 新建项目配置文件:
[program:laravel-queue-worker] ; 是应用程序的唯一标识,不能重复
# 指定进程的命名规则:foo_00,foo_01...
process_name=%(program_name)s_%(process_num)02d
# command 必须。程序启动后执行的命令,可以是绝对命令,也可以是相对命令(在环境$PATH中搜索可执行文件)。受控的程序本身不应该是守护程序。
command=php /Users/wangkaikai/dnmp/www/ali-php/artisan queue:work --sleep=3 --tries=3
# Supervisor 启动时自动启动该程序
autostart=true
# 指定进程挂掉时 Supervisor 自动重启进程
autorestart=true
# 指定运行进程使用的用户,需要 Supervisor 以root用户运行。使用 setuid 切换用户,不会启动shell程序和改变环境变量
user=wangkaikai
# 运行和监控的进程数量,进程位于laravel-worker组内,指定该值需同时设置process_name包含%(process_num)s
numprocs=8
# 将 stderr 错误输出重定向到 stdout 标准输出
redirect_stderr=true
# 将进程的 stdout 标准输出写入文件中,设为NONE不会创建任何日志文件。
stdout_logfile=/Users/wangkaikai/dnmp/www/ali-php/storage/logs/queue-worker.log
supervisor常用命令
# 查看所有进程的状态
supervisorctl status
# 停止laravel-queue-worker
supervisorctl stop laravel-queue-worker
# 启动laravel-queue-worker
supervisorctl start laravel-queue-worker
# 重启laravel-queue-worker
supervisorctl restart laravel-queue-worker
# 配置文件修改后可以使用该命令加载新的配置
supervisorctl update
# 重新启动配置中的所有程序
supervisorctl reload
本文来自博客园,作者:alisleepy,转载请注明原文链接:https://www.cnblogs.com/alisleepy/p/16608313.html