Supervisor
是一个用 Python 编写的进程管理工具,用于监控和管理后台进程。它可以帮助你确保某些进程(如 PHP 消费者脚本)持续运行,并在进程崩溃或服务器重启后自动重启。
在 PHP + Redis 实现异步处理的场景中,
Supervisor
可以用来管理消费者进程,确保它们始终在运行。
一、安装 Supervisor
在 Linux 系统上,可以通过以下命令安装 Supervisor
:
sudo apt-get update
sudo apt-get install supervisor
安装完成后,Supervisor
会自动启动,并在系统启动时自动运行。
二、配置 Supervisor
Supervisor
的配置文件通常位于 /etc/supervisor/conf.d/
目录下。你可以为每个进程创建一个单独的配置文件。
1. 创建配置文件
例如,为 PHP 消费者脚本创建一个配置文件:
sudo nano /etc/supervisor/conf.d/php_worker.conf
2. 编辑配置文件
在配置文件中添加以下内容:
[program:php_worker]
command=php /path/to/your/consumer.php ; 需要运行的命令
directory=/path/to/your/working/directory ; 工作目录
autostart=true ; 是否自动启动
autorestart=true ; 是否自动重启
stderr_logfile=/var/log/php_worker.err.log ; 错误日志文件
stdout_logfile=/var/log/php_worker.out.log ; 输出日志文件
user=www-data ; 运行进程的用户
numprocs=4 ; 启动的进程数量
process_name=%(program_name)s_%(process_num)02d ; 进程名称格式
3. 保存并退出
保存文件并退出编辑器。
三、启动 Supervisor
1. 更新 Supervisor 配置
在添加或修改配置文件后,需要更新 Supervisor
的配置:
sudo supervisorctl reread
sudo supervisorctl update
2. 启动进程
使用以下命令启动配置文件中定义的进程:
sudo supervisorctl start php_worker:*
3. 查看进程状态
可以使用以下命令查看进程状态:
sudo supervisorctl status
输出示例:
php_worker:php_worker_00 RUNNING pid 12345, uptime 0:00:10
php_worker:php_worker_01 RUNNING pid 12346, uptime 0:00:10
php_worker:php_worker_02 RUNNING pid 12347, uptime 0:00:10
php_worker:php_worker_03 RUNNING pid 12348, uptime 0:00:10
常用 Supervisor 命令
-
启动进程:
sudo supervisorctl start <program_name>
-
停止进程:
sudo supervisorctl stop <program_name>
-
重启进程:
sudo supervisorctl restart <program_name>
-
重新加载配置:
sudo supervisorctl reload
-
查看所有进程状态:
sudo supervisorctl status
日志文件
Supervisor
会将进程的标准输出和错误输出重定向到指定的日志文件中。你可以通过以下命令查看日志:
tail -f /var/log/php_worker.out.log
tail -f /var/log/php_worker.err.log
总结
使用 Supervisor
可以轻松管理 PHP 消费者进程,确保它们持续运行并在崩溃后自动重启。通过配置 numprocs
,你还可以启动多个消费者进程,实现并行处理任务。
优点:
-
简单易用,配置灵活。
-
支持自动重启和日志管理。
-
适合生产环境使用。
注意事项:
-
确保 PHP 消费者脚本是长时间运行的(如
while (true)
循环)。 -
如果消费者脚本需要处理大量任务,建议结合 Redis 的队列功能,实现任务分发和处理。