fix(ws_server): 添加父进程状态检查以处理异常退出

在数据库维护子进程中添加父进程状态检查,当父进程异常退出时自动终止子进程
This commit is contained in:
2026-01-24 17:07:01 +08:00
parent d975abb3de
commit c9d4d1d797

View File

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