Skip to content

Commit 13911f2

Browse files
committed
generate request_id
1 parent e1e3063 commit 13911f2

1 file changed

Lines changed: 13 additions & 5 deletions

File tree

src/HttpServer.php

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -261,11 +261,19 @@ public function onRequest(\Swoole\Http\Request $request, \Swoole\Http\Response $
261261
++ self::$worker->worker_http_request_counter;
262262
$count = self::$http_request_counter->add();
263263

264-
$request_time = $request->server['request_time_float'];
265-
$micro_second = substr(sprintf('%.3f', $request_time - floor($request_time)), 2);
266-
$request_string = date("[H:i:s.$micro_second]", $request_time) . self::$worker_id . "-{$count} " .
267-
($request->header['x-forwarded-for'] ?? $request->server['remote_addr']) . ' ' .
268-
$request->server['request_method'] . ' ' . ($request->header['host'] ?? '') .
264+
$request_time_float = $request->server['request_time_float'];
265+
$request_time = (int)$request_time_float;
266+
$client_ip = $request->header['x-forwarded-for'] ?? $request->server['remote_addr'];
267+
$client_ip_int = ip2long($client_ip);
268+
$local_ip_right = ip2long(Environment::getServiceConfig()->local_ip) % 0x10000;
269+
$request_id = sprintf('%08x-%04x-4%03x-%x%03x-%07x%05x', $client_ip_int, $local_ip_right, mt_rand(0, 0xFFF),
270+
mt_rand(8, 0xB), mt_rand(0, 0xFFF), ((int)$request_time) >> 4, $count % 0x100000);
271+
\SysContext::set('request_id', $request_id);
272+
$response->header('X-Request-ID', $request_id);
273+
274+
$micro_second = substr(sprintf('%.3f', $request_time_float - $request_time), 2);
275+
$request_string = date("[H:i:s.$micro_second]", $request_time) . self::$worker_id . "-{$count} " . $client_ip .
276+
' ' . $request->server['request_method'] . ' ' . ($request->header['host'] ?? '') .
269277
$request->server['request_uri'] . (isset($request->server['query_string']) ? '?' .
270278
$request->server['query_string'] : '');
271279

0 commit comments

Comments
 (0)