in agent/php/ElasticApm/Impl/Util/TimeUtil.php [106:180]
public static function formatDurationInMicroseconds(float $durationInMicroseconds): string
{
if ($durationInMicroseconds === 0.0) {
return '0us';
}
$isNegative = ($durationInMicroseconds < 0);
$microsecondsTotalFloat = abs($durationInMicroseconds);
$microsecondsTotalWhole = floor($microsecondsTotalFloat);
$microsecondsFraction = $microsecondsTotalFloat - $microsecondsTotalWhole;
$millisecondsTotalWhole = 0.0;
$microsecondsRemainder = 0.0;
self::calcWholeTimesAndRemainderForFloat(
$microsecondsTotalWhole,
TimeUtil::NUMBER_OF_MICROSECONDS_IN_MILLISECOND,
/* ref */ $millisecondsTotalWhole,
/* ref */ $microsecondsRemainder
);
$secondsTotalWhole = 0.0;
$millisecondsRemainder = 0.0;
self::calcWholeTimesAndRemainderForFloat(
$millisecondsTotalWhole,
TimeUtil::NUMBER_OF_MILLISECONDS_IN_SECOND,
/* ref */ $secondsTotalWhole,
/* ref */ $millisecondsRemainder
);
$minutesTotalWhole = 0.0;
$secondsRemainder = 0.0;
self::calcWholeTimesAndRemainderForFloat(
$secondsTotalWhole,
TimeUtil::NUMBER_OF_SECONDS_IN_MINUTE,
/* ref */ $minutesTotalWhole,
/* ref */ $secondsRemainder
);
$hoursTotalWhole = 0.0;
$minutesRemainder = 0.0;
self::calcWholeTimesAndRemainderForFloat(
$minutesTotalWhole,
TimeUtil::NUMBER_OF_MINUTES_IN_HOUR,
/* ref */ $hoursTotalWhole,
/* ref */ $minutesRemainder
);
$hoursRemainder = 0.0;
$daysTotalWhole = 0.0;
self::calcWholeTimesAndRemainderForFloat(
$hoursTotalWhole,
TimeUtil::NUMBER_OF_HOURS_IN_DAY,
/* ref */ $daysTotalWhole,
/* ref */ $hoursRemainder
);
$appendRemainder = function (string $appendTo, float $remainder, string $units): string {
if ($remainder === 0.0) {
return $appendTo;
}
$remainderAsString = ($remainder === floor($remainder)) ? strval(intval($remainder)) : strval($remainder);
return $appendTo . (TextUtil::isEmptyString($appendTo) ? '' : ' ') . $remainderAsString . $units;
};
$result = '';
$result = $appendRemainder($result, $daysTotalWhole, 'd');
$result = $appendRemainder($result, $hoursRemainder, 'h');
$result = $appendRemainder($result, $minutesRemainder, 'm');
$result = $appendRemainder($result, $secondsRemainder, 's');
$result = $appendRemainder($result, $millisecondsRemainder, 'ms');
$result = $appendRemainder($result, $microsecondsRemainder + $microsecondsFraction, 'us');
return ($isNegative ? '-' : '') . $result;
}