in agent/php/ElasticApm/Impl/AutoInstrument/CurlHandleTracker.php [503:534]
private function setContextDestinationService(): void
{
if ($this->url === null) {
return;
}
$parsedUrl = parse_url($this->url);
if (!is_array($parsedUrl)) {
return;
}
$scheme = ArrayUtil::getValueIfKeyExistsElse('scheme', $parsedUrl, null);
if ($scheme !== null && !is_string($scheme)) {
$scheme = null;
}
$host = ArrayUtil::getValueIfKeyExistsElse('host', $parsedUrl, null);
if ($host !== null && !is_string($host)) {
$host = null;
}
$port = ArrayUtil::getValueIfKeyExistsElse('port', $parsedUrl, null);
if ($port !== null && !is_int($port)) {
$port = null;
}
$defaultPortForScheme = ($scheme === null) ? null : UrlUtil::defaultPortForScheme($scheme);
$name = $this->buildContextDestinationServiceName($scheme, $host, $port, $defaultPortForScheme);
$resource = $this->buildContextDestinationServiceResource($host, $port, $defaultPortForScheme);
if ($name !== null && $resource !== null) {
$this->span->context()->destination()->setService($name, $resource, Constants::SPAN_TYPE_EXTERNAL);
}
}