fix(ws_server): 添加父进程状态检查以处理异常退出
在数据库维护子进程中添加父进程状态检查,当父进程异常退出时自动终止子进程
This commit is contained in:
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user