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();