Supervisor 进程管理工具使用
php artisan horizon 和 php artisan queue:work 命令一样,都可以正常处理异步任务
php artisan horizon:terminate => Horizon 进程会等待当前正在执行的任务执行完毕,然后再退出进程。
在阿里云 CentOS 7.6 上
1
| yum install -y supervisor
|
- 查看主配置信息
supervisord.conf
留意 include
选项
1 2 3 4 5 6
| cat /etc/supervisord.conf
[include] files = supervisord.d/*.ini
|
vim /etc/supervisord.d/larablog.ini
1 2 3 4 5 6 7 8 9 10
| [program:larablog-horizon] process_name=%(program_name)s command=php /www/wwwroot/larablog/artisan horizon autostart=true autorestart=true user=www redirect_stderr=true stdout_logfile=/www/wwwroot/larablog/storage/logs/worker.log
|
- program:larablog-horizon 代表这个配置的名称是 larablog-horizon;
- process_name= 代表这个进程在 Supervisor 内部的命名;
- command= 代表要执行的命令;
- autostart=true 代表这个进程跟随 Supervisor,只要 Supervisor 启动了,就启动这个进程;
- autorestart=true 代表要求 Supervisor 监听进程状态,假如异常退出就再次启动,重启次数默认有 3 次限制;
- user=www 代表以 www 身份启动进程;
- redirect_stderr=true 代表输出错误信息;
- stdout_logfile= 代表将进程的输出保存到日志文件中。
1
| sudo supervisorctl update
|
如果遇到报错 error: <class 'socket.error'>, [Errno 2] No such file or directory: file: /usr/lib64/python2.7/socket.py line: 224
则执行以下命令
1 2 3 4 5 6
| sudo supervisord -c /etc/supervisord.conf
sudo supervisorctl update
sudo supervisorctl -c /etc/supervisord.conf
|
1
| sudo supervisorctl status
|
在 ubuntu 上
1
| sudo apt-get install supervisor
|
vim /etc/supervisor/conf.d/larablog.conf
1 2 3 4 5 6 7 8 9 10
| [program:larablog-horizon] process_name=%(program_name)s command=php /www/wwwroot/larablog/artisan horizon autostart=true autorestart=true user=www redirect_stderr=true stdout_logfile=/www/wwwroot/larablog/storage/logs/worker.log
|
1
| sudo supervisorctl update
|
1
| sudo supervisorctl status
|
1 2 3 4
| sudo supervisorctl start <process-name>
sudo supervisorctl start larablog-horizon
|