Blog. Just Blog

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

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

0.57975400 1222376863

Значит для подсчета времени требуется получить значения microtime() в начале и конце работы скрипта и отобразить разницу между ними. Для выделения из строки числовых значений воспользуемся функцией explode().
  1. <?
  2. // Начало скрипта
  3.  
  4. // Получаем текущее время с микросекундами
  5. $mtime=explode(" ",microtime());
  6. // После выполнения команды explode() массив $mtime содержит значения:
  7. // $mtime[0] - микросекунды, $mtime[1] - секунды
  8. $tstart=$mtime[1]+$mtime[0]; // Засекаем начальное время
  9.  
  10. ...
  11. ...
  12. // Основной код скрипта
  13. ...
  14. ...
  15.  
  16. // Получаем текущее время с микросекундами
  17. $mtime=explode(" ",microtime());
  18. // Уже знакомая нам функция explode()
  19. $tend=$mtime[1]+$mtime[0]; // Засекаем конечное время
  20. // Округляем до двух знаков после запятой
  21. $totaltime=round(($tend-$tstart),2);
  22. // Результат на экран
  23. echo "Время генерации страницы: ".$totaltime." сек.";
  24.  
  25. // Конец скрипта
  26. ?>
Рабочий пример вы можете посмотреть в самом низу этого сайта.

Начиная с версии PHP 5.0.0 у функции microtime() появился аргумент. Если он равен 1, то функция сразу возвращает действительное число секунд с микросекундами, а не строку. Поэтому для PHP5 приведенный выше код сократится до
  1. <?
  2. // Начало скрипта
  3.  
  4. $tstart=microtime(1); // Засекаем начальное время
  5.  
  6. ...
  7. ...
  8. // Основной код скрипта
  9. ...
  10. ...
  11.  
  12. $tend=microtime(1); // Засекаем конечное время
  13. // Округляем до двух знаков после запятой
  14. $totaltime=round(($tend-$tstart),2);
  15. // Результат на экран
  16. echo "Время генерации страницы: ".$totaltime." сек.";
  17.  
  18. // Конец скрипта
  19. ?>
Но для поддержания обратной совместимости рекомендуется использовать первый вариант. Этот же код можно использовать для замера времени выполнения отдельных участков кода.

Поделиться ссылкой ВКонтакте
Просмотров: 8797 | Комментариев: 5

Метки: PHP
Внимание! Статья опубликована больше года назад, информация могла устареть!

Комментарии

Отзывы посетителей сайта о статье
Алексей (02.09.2015 в 02:26):
А у меня такой результат (Время генерации страницы: 1441149902.76 сек.)
При этом секунды 3 уходит всего. ЧЯДНТ?
ManHunter (22.12.2011 в 12:23):
Параметр get_as_float функции microtime() введен только с 5-й версии PHP
Евгений (22.12.2011 в 12:22):
Так, думаю, не плохо
$start = microtime(true);// начало
// Основной код скрипта
echo '<small>' . (microtime(true) - $start) . '</small>';// конец
Golden (23.10.2011 в 09:34):
Есть ещё вариант с помощью функции array_sum():

$start = array_sum(explode(" ", microtime()));

что эквивалентно $tstart=$mtime[1]+$mtime[0]; // Засекаем начальное время
AiR (14.04.2011 в 23:54):
Это стандартный пример из документации PHP с сайта php.net :)

Добавить комментарий

Заполните форму для добавления комментария
Имя*:
Текст комментария (не более 2000 символов)*:

*Все поля обязательны для заполнения.
Комментарии, содержащие рекламу, ненормативную лексику, оскорбления и т.п., а также флуд и сообщения не по теме, будут удаляться. Нарушителям может быть заблокирован доступ к сайту.
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2025
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.07 сек. / MySQL: 2 (0.0043 сек.) / Память: 4.5 Mb
Наверх