001.png

Очевидно, что время генерации страницы — это разница от момента обработки первой строчки скрипта до момента обработки последней строчки. Для его расчета точности функции 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." сек.";

// Конец скрипта
?>

Рабочий пример вы можете посмотреть в самом низу этого сайта. Значение времени генерации старницы указано в квадратных скобках после слеша, вот так: [ 00 / 0.000 ]

Начиная с версии PHP 5.0.0 у функции microtime() появился аргумент. Если он равен 1, то функция сразу возвращает действительное число секунд с микросекундами, а не строку. Поэтому для PHP5 приведенный выше код сократится до

<?
// Начало скрипта

$tstart=microtime(1); // Засекаем начальное время

...
...
// Основной код скрипта
...
...

$tend=microtime(1); // Засекаем конечное время
// Округляем до двух знаков после запятой
$totaltime=round(($tend-$tstart),2);
// Результат на экран
echo "Время генерации страницы: ".$totaltime." сек.";

// Конец скрипта
?>

Но для поддержания обратной совместимости рекомендуется использовать первый вариант. Этот же код можно использовать для замера времени выполнения отдельных участков кода.

h++//www.manhunter.ru/webmaster/17_podschet_vremeni_generacii_stranici_sayta.html

Категория: PHP, HTML, CSS...

Оставьте свой комментарий