创建PHP守护进程后台运行,监控状态退出自动重启
经常用到PHP脚本写的小程序需要在服务器端保持后台运行,除了使用screen等工具外,这里介绍使用Linux shell编写一个小工具实现PHP脚本程序在后台保持运行,不受终端退出影响,且能自动监测脚本运行状态,对因其他因素导致程序退出的情况自动进行脚本重启,实现守护运行.
创建一个shell脚本 daemon.sh,内容如下:
#!/bin/bash
count=`ps -ef | grep daemon.php | grep -v “grep” | wc -l` #搜索进程查看是否存在正在执行的进程
echo $count
if [ $count -lt 1 ]; then
ulimit -c unlimited
nohup /usr/local/bin/php /root/test/daemon.php & #注意脚本路径需要填写绝对路径echo $(date), start success >> /root/test/daemon.log #记录日志
else
echo $(date), running >> /root/test/daemon.log
fi
daemon.php 为我们的PHP小程序入口,可以根据需要进行修改
为脚本添加执行权限
$ chmod +x daemon.sh
为实现自动监测功能,需要借助 LInux的 crontab 定时执行脚本,添加定时任务每分钟执行一次
* * * * * /root/test/daemon.sh
可以改进的地方
- 可以通过netstat -lnp 检测端口是否在监听,如果未在监听,则执行restart
- 通过一个check.php发送一段带有逻辑的请求,试探服务器是否可以正常工作,如果无法工作,执行restart
- 使用supervisor监控进程的工具
- 如果在Docker容器中使用,可以在docker run时增加参数–restart=always