Таймер генерации страниц PHP возвращает действительно большие числа? (1 миллиард + секунд, по-видимому)

В моем проекте 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, но я не понимаю, как это может повлиять на то, что делает функция. Есть идеи о том, что здесь происходит?

1

Решение

Числа, которые вы получаете, очень похожи на числа, которые вы получили бы от 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. Он содержит метку времени начала запроса с точностью до микросекунды.

0

Другие решения

ОБНОВЛЕНИЕ: я исправил проблему, обновив мой PHP до чего-то более нового, чем 5.4.0. $ _SERVER [‘REQUEST_TIME_FLOAT’] был введен только в 5.4.0, поэтому проблема возникла в PHP 5.3.3.

0

По вопросам рекламы [email protected]