$error_msg]); } curl_close($ch); return $response; } if (isset($_SERVER['HTTP_ACCEPT']) && strpos($_SERVER['HTTP_ACCEPT'], 'text/event-stream') !== false) { // 设置SSE头信息 header('Content-Type: text/event-stream; charset=UTF-8'); header('Cache-Control: no-cache, must-revalidate'); header('Connection: keep-alive'); header('X-Accel-Buffering: no'); // 禁用Nginx缓冲 header('Access-Control-Allow-Origin: *'); header('Content-Encoding: none'); // 禁用压缩 // 设置脚本超时时间 set_time_limit(0); ignore_user_abort(true); // 禁用输出缓冲 if (ob_get_level()) { ob_end_clean(); } ob_implicit_flush(true); // 发送心跳包保持连接 function sendHeartbeat() { echo ": heartbeat\n\n"; ob_flush(); flush(); } $total = count($links); $completed = 0; // 发送初始心跳 sendHeartbeat(); // 检查连接是否中断 if (connection_aborted()) { exit; } foreach ($links as $link) { $startTime = microtime(true); $result = callApi($link); $endTime = microtime(true); $executionTime = round(($endTime - $startTime) * 1000, 2); // 毫秒 $completed++; $progress = round(($completed / $total) * 100); $data = [ 'link' => $link, 'start_time' => date('Y-m-d H:i:s', $startTime), 'end_time' => date('Y-m-d H:i:s', $endTime), 'execution_time' => $executionTime, 'result' => $result, 'progress' => $progress ]; echo "data: " . json_encode($data) . "\n\n"; ob_flush(); flush(); } echo "event: complete\ndata: {}\n\n"; exit; } ?> API 调用工具

API 调用工具

0%