PHP

Подсчет времени генерации страницы сайта

Очевидно, что время генерации страницы - это разница от момента обработки первой строчки скрипта до момента обработки последней строчки. Для его расчета точности функции time() недостаточно, так как ее шаг равен 1 секунде. Страница же на сервере обычно генерируется за меньшее время. Если это не так, то стоит всерьез озадачиться оптимизацией вашего кода или сменой хостинг-провайдера. Для замеров более коротких интервалов времени в PHP существует функция microtime(). Она возвращает в виде строки текущее время с микросекундами, например:

0.57975400 1222376863


Значит для подсчета времени требуется получить значения microtime() в начале и конце работы скрипта и отобразить разницу между ними. Для выделения из строки числовых значений воспользуемся функцией explode().
<?
// Начало скрипта
 
// Получаем текущее время с микросекундами
$mtime=explode(" ",microtime());
// После выполнения команды explode() массив $mtime содержит значения:
// $mtime[0] - микросекунды, $mtime[1] - секунды
$tstart=$mtime[1]+$mtime[0]; // Засекаем начальное время
 
...
...
// Основной код скрипта
...
...
 
// Получаем текущее время с микросекундами
$mtime=explode(" ",microtime());
// Уже знакомая нам функция explode()
$tend=$mtime[1]+$mtime[0]; // Засекаем конечное время
// Округляем до двух знаков после запятой
$totaltime=round(($tend-$tstart),2);
// Результат на экран
echo "Время генерации страницы: ".$totaltime." сек.";
 
// Конец скрипта
?>

Рабочий пример вы можете посмотреть в самом низу этого сайта.

Начиная с версии PHP 5.0.0 у функции microtime() появился аргумент. Если он равен 1, то функция сразу возвращает действительное число секунд с микросекундами, а не строку. Поэтому для PHP5 приведенный выше код сократится до
<?
// Начало скрипта
 
$tstart=microtime(1); // Засекаем начальное время
 
...
...
// Основной код скрипта
...
...
 
$tend=microtime(1); // Засекаем конечное время
// Округляем до двух знаков после запятой
$totaltime=round(($tend-$tstart),2);
// Результат на экран
echo "Время генерации страницы: ".$totaltime." сек.";
 
// Конец скрипта
?>

Но для поддержания обратной совместимости рекомендуется использовать первый вариант. Этот же код можно использовать для замера времени выполнения отдельных участков кода.
Теги:
time, microtime, explode
Добавлено: 21 Сентября 2013 02:21:02 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...