feat: 更新请求上下文处理

This commit is contained in:
kuaifan 2025-07-31 11:06:23 +08:00
parent 734b5f9534
commit 625648c908
2 changed files with 13 additions and 3 deletions

View File

@ -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'));

View File

@ -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);
}
/**