В моем проекте PHP я пытаюсь время генерации страницы. Используя скрипт из http://blog.alastair.pro/2013/01/18/php-page-generation-time/ Я создал функцию, которую я вызываю в footer.php и других разных PHP-файлах, у которых нет нижнего колонтитула. Насколько я знаю, это должно работать:
function timer($type)
{
$totalTime = round((microtime(TRUE) - $_SERVER['REQUEST_TIME_FLOAT']), 4);
if (is_int($type)) {
if ($type == TYPE_TIMER_COMMENT) {
return "<!-- Page generated in " . $totalTime . " seconds. -->";
} elseif ($type == TYPE_TIMER_PLAINTEXT) {
return "Page generated in " . $totalTime . " seconds.";
}
} else {
header('location:./error/type.html');
die();
}
}
К сожалению, это не так. Он выводит огромные числа:
Страница сгенерирована за 1428979311.8916 секунд.
Страница сгенерирована за 1428979357.1691 секунд.
Страница сгенерирована за 1428979346.8255 секунд.
и т. д.
Я понятия не имею, что здесь происходит. Я называю это так:
if (Config::DEBUG)
echo ('<small>' . timer(TYPE_TIMER_PLAINTEXT) . '</small>');
TYPE_TIMER_PLAINTEXT и TYPE_TIMER_COMMENT — это константы, объявленные внутри functions.php, но я не понимаю, как это может повлиять на то, что делает функция. Есть идеи о том, что здесь происходит?
Числа, которые вы получаете, очень похожи на числа, которые вы получили бы от microtime(true) - 0
, Из этого следует $_SERVER['REQUEST_TIME_FLOAT'] = 0
(или, по крайней мере, что-то, что действует как ноль, когда вы вычитаете это.)
На основе это примечание в документации PHP для Microtime, Я предполагаю, что ваша версия PHP < 5.4, а REQUEST_TIME_FLOAT отсутствует в $ _SERVER. Если ваша версия PHP> = 5.4, то я согласен, что она должна работать.
Начиная с PHP 5.4.0, REQUEST_TIME_FLOAT доступен в суперглобальном массиве $ _SERVER. Он содержит метку времени начала запроса с точностью до микросекунды.
ОБНОВЛЕНИЕ: я исправил проблему, обновив мой PHP до чего-то более нового, чем 5.4.0. $ _SERVER [‘REQUEST_TIME_FLOAT’] был введен только в 5.4.0, поэтому проблема возникла в PHP 5.3.3.