startTime = microtime(true); // 处理请求 $response = $handler($request); // 计算请求处理时间 $duration = microtime(true) - $this->startTime; // 记录指标 $this->recordMetrics($request, $response, $duration); return $response; } /** * 记录指标 * * @param Request $request * @param Response $response * @param float $duration */ protected function recordMetrics(Request $request, Response $response, float $duration): void { try { $method = $request->method(); $path = $request->path(); $status = $response->getStatusCode(); // 获取响应大小 $responseSize = strlen($response->rawBody()); // 记录HTTP请求指标 MetricsController::recordHttpRequest($method, $path, $status, $duration, $responseSize); // 记录请求处理时间 MetricsController::setGauge('webman_http_request_duration_seconds', $duration, [ 'method' => $method, 'path' => $path, 'status' => (string)$status ]); } catch (\Exception $e) { // 记录指标失败不应影响正常请求 error_log('Metrics recording failed: ' . $e->getMessage()); } } }