public function calculateTimings($messages)
{
$timings = [];
$stack = [];
foreach ($messages as $i => $log) {
list($token, $level, $category, $timestamp, $traces) = $log;
$log[5] = $i;
if ($level == Logger::LEVEL_PROFILE_BEGIN) {
$stack[] = $log;
} elseif ($level == Logger::LEVEL_PROFILE_END) {
if (($last = array_pop($stack)) !== null && $last[0] === $token) {
$timings[$last[5]] = ['info' => $last[0], 'category' => $last[2], 'timestamp' => $last[3], 'trace' => $last[4], 'level' => count($stack), 'duration' => $timestamp - $last[3]];
}
}
}
ksort($timings);
return array_values($timings);
}