发布于2026-07-11 阅读(0)
扫一扫,手机访问
PHP后端开发中,偶尔会遇到这样一个需求:一个常驻进程需要被另一个进程监控着,一旦挂了就马上拉起。听起来有点像进程守护,但又不希望用supervisor这类系统级工具,只想用纯PHP来实现。下面这个思路很实用,而且巧妙地避开了单纯靠进程名匹配可能带来的误判问题。

核心逻辑其实很清晰:被守护的进程(b.php)在启动时把自己的进程ID写到一个专门的文件里(比如c.pid)。守护进程(a.php)定期去读这个文件,如果文件存在且不为空,就把里面的PID取出来,然后通过ps -p PID | grep 文件名来确认这个进程是否还活着。为什么不直接用ps aux | grep 文件名?因为如果服务器上有多个同名的PHP脚本在跑,grep出来的结果会一锅粥,根本分不清到底是不是你要的那个进程。用PID文件的方式精准定位,才是靠谱的做法。
下面是a.php的代码实现——
0) echo('runing');
else{echo 'not run';}
?>
而b.php作为被守护的一方,做的事情同样简单——
注意b.php里每循环一次都会重新写入PID,这个操作不是多余的——一旦进程因为某些原因被重启(比如手动kill后又被守护进程拉起),新的PID会即时更新,守护进程那边拿到的永远是当前正确的进程号。整个方案轻量、精准,没有外部依赖,很适合在多个并发的常驻进程场景下使用。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8