使用PM2守护PHP命令行程序
2016年12月22日 · 119 字 · 1 分钟
pm2是nodejs的一个模块,用来进行进程管理,刚开始以为只能做nodejs脚本的管理,后来发现通过配置之后也可以实现任意进程的守护。
安装
npm install pm2 -g
使用
启动
- 启动php文件
pm2 start app.php
启动完成后会输出
┌───────────────┬────┬──────┬───────┬────────┬─────────┬────────┬─────┬───────────┬──────────┐
│ App name │ id │ mode │ pid │ status │ restart │ uptime │ cpu │ mem │ watching │
├───────────────┼────┼──────┼───────┼────────┼─────────┼────────┼─────┼───────────┼──────────┤
│ app.php │ 5 │ fork │ 30996 │ online │ 0 │ 104s │ 0% │ 16.2 MB │ disabled │
└───────────────┴────┴──────┴───────┴────────┴─────────┴────────┴─────┴───────────┴──────────┘
id为pm2中管理进程使用的标识 进程死掉之后pm2会自动重启
查看进程详情
pm2 describe 5
停止进程
pm2 stop 5
进程列表
pm2 list
进程资源监控
pm2 monit
停止所有进程
pm2 stop all
删除所有进程
pm2 delete all
查看进程输出
pm2 logs [id]
不传入id时显示所有日志,否则显示指定进程日志
使用配置文件启动
pm2 强大之处在于其支持任意程序的守护,使用配置文件来启动程序比使用命令行启动更加清晰:
{
"name": "delay-message",
"args": "task/delaymessage",
"script": "yii",
"exec_interpreter": "php",
"exec_mode": "fork",
"max_memory_restart": "100M"
}
- name 脚本显示名称
- args 脚本参数
- script 脚本文件名称
- exec_interpreter 使用的解析器
- exec_mode 启动模式,fork为使用子进程启动,cluster 使用nodejs的cluster模块启动
- max_memory_restart 进程占用内存超过时自动重启