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. ?>
Но для поддержания обратной совместимости рекомендуется использовать первый вариант. Этот же код можно использовать для замера времени выполнения отдельных участков кода.

Поделиться ссылкой ВКонтакте Поделиться ссылкой на Facebook Поделиться ссылкой на LiveJournal Поделиться ссылкой в Мой Круг Добавить в Мой мир Добавить на ЛиРу (Liveinternet) Добавить в закладки Memori Добавить в закладки Google
Просмотров: 6112 | Комментариев: 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-2017
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.05 сек. / MySQL: 2 (0.0023 сек.) / Память: 4.5 Mb
Наверх