From c9d4d1d7970b850ccf824b93e1cee3e362effc52 Mon Sep 17 00:00:00 2001 From: ZF sun <34314687@qq.com> Date: Sat, 24 Jan 2026 17:07:01 +0800 Subject: [PATCH] =?UTF-8?q?fix(ws=5Fserver):=20=E6=B7=BB=E5=8A=A0=E7=88=B6?= =?UTF-8?q?=E8=BF=9B=E7=A8=8B=E7=8A=B6=E6=80=81=E6=A3=80=E6=9F=A5=E4=BB=A5?= =?UTF-8?q?=E5=A4=84=E7=90=86=E5=BC=82=E5=B8=B8=E9=80=80=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在数据库维护子进程中添加父进程状态检查,当父进程异常退出时自动终止子进程 --- src/ws_server.php | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/ws_server.php b/src/ws_server.php index 34979c18a..ce8cf8d1e 100644 --- a/src/ws_server.php +++ b/src/ws_server.php @@ -479,6 +479,10 @@ if (extension_loaded('pcntl')) { // 每30秒检查一次数据库连接 $checkInterval = 30; // 秒 + // 保存父进程PID + $parentPid = getppid(); + ws_echo("[数据库维护子进程] 父进程PID: {$parentPid}"); + // 设置子进程的信号处理 pcntl_signal(SIGTERM, function() { ws_echo("[数据库维护子进程] 收到终止信号,正在退出..."); @@ -489,6 +493,13 @@ if (extension_loaded('pcntl')) { // 检查是否有信号需要处理 pcntl_signal_dispatch(); + // 检查父进程是否仍然存在 + $currentParentPid = getppid(); + if ($currentParentPid === 1) { + ws_echo("[数据库维护子进程] 父进程已退出,正在退出..."); + exit(0); + } + try { // 尝试执行一个简单的数据库查询来测试连接 $addon_model = new Addon();