![Blog. Just Blog](/images/logo.png)
Подсчет времени генерации страницы сайта
Очевидно, что время генерации страницы - это разница от момента обработки первой строчки скрипта до момента обработки последней строчки. Для его расчета точности функции time() недостаточно, так как ее шаг равен 1 секунде. Страница же на сервере обычно генерируется за меньшее время. Если это не так, то стоит всерьез озадачиться оптимизацией вашего кода или сменой хостинг-провайдера. Для замеров более коротких интервалов времени в PHP существует функция microtime(). Она возвращает в виде строки текущее время с микросекундами, например:0.57975400 1222376863
Значит для подсчета времени требуется получить значения microtime() в начале и конце работы скрипта и отобразить разницу между ними. Для выделения из строки числовых значений воспользуемся функцией explode().
Code (PHP) : Убрать нумерацию
- <?
- // Начало скрипта
- // Получаем текущее время с микросекундами
- $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 приведенный выше код сократится до
Code (PHP) : Убрать нумерацию
- <?
- // Начало скрипта
- $tstart=microtime(1); // Засекаем начальное время
- ...
- ...
- // Основной код скрипта
- ...
- ...
- $tend=microtime(1); // Засекаем конечное время
- // Округляем до двух знаков после запятой
- $totaltime=round(($tend-$tstart),2);
- // Результат на экран
- echo "Время генерации страницы: ".$totaltime." сек.";
- // Конец скрипта
- ?>
Просмотров: 8797 | Комментариев: 5
Метки: PHP
![](/images/dot.gif)
Внимание! Статья опубликована больше года назад, информация могла устареть!
Комментарии
Отзывы посетителей сайта о статье
![](/images/dot.gif)
ManHunter
(22.12.2011 в 12:23):
Параметр get_as_float функции microtime() введен только с 5-й версии PHP
![](/images/dot.gif)
Евгений
(22.12.2011 в 12:22):
Так, думаю, не плохо
$start = microtime(true);// начало
// Основной код скрипта
echo '<small>' . (microtime(true) - $start) . '</small>';// конец
$start = microtime(true);// начало
// Основной код скрипта
echo '<small>' . (microtime(true) - $start) . '</small>';// конец
![](/images/dot.gif)
Golden
(23.10.2011 в 09:34):
Есть ещё вариант с помощью функции array_sum():
$start = array_sum(explode(" ", microtime()));
что эквивалентно $tstart=$mtime[1]+$mtime[0]; // Засекаем начальное время
$start = array_sum(explode(" ", microtime()));
что эквивалентно $tstart=$mtime[1]+$mtime[0]; // Засекаем начальное время
![](/images/dot.gif)
AiR
(14.04.2011 в 23:54):
Это стандартный пример из документации PHP с сайта php.net :)
![](/images/dot.gif)
Добавить комментарий
Заполните форму для добавления комментария
![](/images/dot.gif)
При этом секунды 3 уходит всего. ЧЯДНТ?