diff --git a/php/index.php b/php/index.php index 71bdc64..ebbcd6e 100644 --- a/php/index.php +++ b/php/index.php @@ -1,7 +1,8 @@ 'tunnel.*--edge-ip-version auto', + // 'sing-box' => 'run -c.*config\.json' // sing-box: run -c /路径/config.json + // ]; + + // // 只在启用时测试nezha + // if ($CHECK_NEZHA) { + // $patterns['nezha v0'] = ':[0-9].* -p'; // nezha v0: 更精确的匹配 - 端口和-p参数组合 + // $patterns['nezha v1'] = '-c.*config\.yaml'; + // } + + // foreach ($patterns as $service => $pattern) { + // echo "$service 模式: $pattern\n"; + // $output = []; + // exec("ps aux | grep '$pattern' | grep -v grep", $output); + // if (empty($output)) { + // echo "结果: 未找到\n\n"; + // } else { + // echo "结果: 找到 " . count($output) . " 个匹配项\n"; + // foreach ($output as $line) { + // echo " $line\n"; + // } + // echo "\n"; + // } + // } + + // echo "3. checkProcesses() 函数结果:\n"; + // $result = checkProcesses(); + // echo "运行中: " . implode(", ", $result['running']) . "\n"; + // echo "未运行: " . implode(", ", $result['not_running']) . "\n"; + // break; + default: http_response_code(404); echo "404 Not Found"; break; -} \ No newline at end of file +} + +// 进程检查函数 +function checkProcess($pattern) { + $command = "ps aux | grep '$pattern' | grep -v grep"; + $output = []; + exec($command, $output); + return count($output) > 0; +} + +// 检查nezha进程(兼容v0和v1) +function checkNezhaProcess() { + // 检查 nezha v0 + if (checkProcess(':[0-9].* -p')) { + return true; + } + // 检查 nezha v1 + if (checkProcess('-c.*config\.yaml')) { + return true; + } + return false; +} + +// 检查所有服务状态 +function checkProcesses() { + global $CHECK_NEZHA; + + $processes = [ + 'cloudflared' => 'tunnel.*--edge-ip-version auto', + 'sing-box' => 'run -c.*config\.json' + ]; + + $runningProcesses = []; + $notRunningProcesses = []; + + // 根据变量决定是否检测nezha + if ($CHECK_NEZHA) { + if (checkNezhaProcess()) { + $runningProcesses[] = 'nezha'; + } else { + $notRunningProcesses[] = 'nezha'; + } + } + + foreach ($processes as $serviceName => $pattern) { + if (checkProcess($pattern)) { + $runningProcesses[] = $serviceName; + } else { + $notRunningProcesses[] = $serviceName; + } + } + + return [ + 'running' => $runningProcesses, + 'not_running' => $notRunningProcesses + ]; +}