@@ -48,16 +48,34 @@ public static function register(): void
48
48
?int $ lineno ,
49
49
) use ($ instrumentation ): array {
50
50
/** @psalm-suppress ArgumentTypeCoercion */
51
+ $ requestOptions = $ params [2 ] ?? [];
52
+
53
+ if (array_key_exists ('base_uri ' , $ requestOptions )) {
54
+ $ baseuri = $ requestOptions ['base_uri ' ];
55
+ $ parsedUrl = parse_url ($ baseuri );
56
+ if (!array_key_exists ('port ' , $ parsedUrl )) {
57
+ $ parsedUrl ['port ' ] = $ parsedUrl ['scheme ' ] === 'https ' ? 443 : 80 ;
58
+ }
59
+ } else {
60
+ $ parsedUrl = parse_url ((string ) $ params [1 ]);
61
+ if (!array_key_exists ('port ' , $ parsedUrl )) {
62
+ $ parsedUrl ['port ' ] = $ parsedUrl ['scheme ' ] === 'https ' ? 443 : 80 ;
63
+ }
64
+ $ baseuri = sprintf ('%s://%s:%d ' , $ parsedUrl ['scheme ' ], $ parsedUrl ['host ' ], $ parsedUrl ['port ' ]);
65
+ }
66
+
51
67
$ builder = $ instrumentation
52
68
->tracer ()
53
- ->spanBuilder (\sprintf ('%s ' , $ params [0 ]))
69
+ ->spanBuilder (\sprintf ('%s %s ' , $ params [0 ], $ baseuri ))
54
70
->setSpanKind (SpanKind::KIND_CLIENT )
55
- ->setAttribute (TraceAttributes::PEER_SERVICE , parse_url (( string ) $ params [ 1 ])[ 'host ' ] ?? null )
71
+ ->setAttribute (TraceAttributes::PEER_SERVICE , $ parsedUrl [ 'host ' ])
56
72
->setAttribute (TraceAttributes::URL_FULL , (string ) $ params [1 ])
57
73
->setAttribute (TraceAttributes::HTTP_REQUEST_METHOD , $ params [0 ])
58
74
->setAttribute (TraceAttributes::CODE_FUNCTION , $ function )
59
75
->setAttribute (TraceAttributes::CODE_NAMESPACE , $ class )
60
76
->setAttribute (TraceAttributes::CODE_FILEPATH , $ filename )
77
+ ->setAttribute (TraceAttributes::SERVER_ADDRESS ,$ parsedUrl ['host ' ])
78
+ ->setAttribute (TraceAttributes::SERVER_PORT , $ parsedUrl ['port ' ])
61
79
->setAttribute (TraceAttributes::CODE_LINENO , $ lineno );
62
80
63
81
$ propagator = Globals::propagator ();
@@ -67,7 +85,6 @@ public static function register(): void
67
85
->setParent ($ parent )
68
86
->startSpan ();
69
87
70
- $ requestOptions = $ params [2 ] ?? [];
71
88
72
89
if (!isset ($ requestOptions ['headers ' ])) {
73
90
$ requestOptions ['headers ' ] = [];
0 commit comments