From 625648c9081e9699b1abc8da1dbc1c507cb15acd Mon Sep 17 00:00:00 2001 From: kuaifan Date: Thu, 31 Jul 2025 11:06:23 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=9B=B4=E6=96=B0=E8=AF=B7=E6=B1=82?= =?UTF-8?q?=E4=B8=8A=E4=B8=8B=E6=96=87=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Middleware/WebApi.php | 3 +-- app/Services/RequestContext.php | 13 ++++++++++++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/app/Http/Middleware/WebApi.php b/app/Http/Middleware/WebApi.php index 79ee4296a..136f3c0dc 100644 --- a/app/Http/Middleware/WebApi.php +++ b/app/Http/Middleware/WebApi.php @@ -19,8 +19,7 @@ class WebApi */ public function handle($request, Closure $next) { - // 为每个请求生成唯一ID - $request->requestId = RequestContext::generateRequestId(); + // 记录请求信息 RequestContext::set('start_time', microtime(true)); RequestContext::set('header_language', $request->header('language')); diff --git a/app/Services/RequestContext.php b/app/Services/RequestContext.php index e503ec00d..b5a4b9d64 100644 --- a/app/Services/RequestContext.php +++ b/app/Services/RequestContext.php @@ -11,6 +11,8 @@ use Swoole\Coroutine; */ class RequestContext { + /** @var string 请求ID的上下文键 */ + private const CONTEXT_KEY = 'request_id'; /** @var string 请求ID前缀 */ private const REQUEST_ID_PREFIX = 'req'; @@ -37,7 +39,16 @@ class RequestContext */ public static function getCurrentRequestId($requestId = null): ?string { - return $requestId ?? request()?->requestId; + if (str_starts_with($requestId, self::REQUEST_ID_PREFIX)) { + return $requestId; + } + + $request = request(); + if (!$request->attributes->has(static::CONTEXT_KEY)) { + $request->attributes->set(static::CONTEXT_KEY, self::generateRequestId()); + } + + return $request->attributes->get(static::CONTEXT_KEY); } /**