Большой архив статей, книг, документации по программированию, вебдизайну, компьютерной графике, сетям, операционным системам и многому другому
 
<Добавить в Избранное>    <Сделать стартовой>    <Реклама на сайте>    <Контакты>
  Главная Документация Новости ИТ Программы Книги Games   Обои   Экспорт RSS E-Books
 
Поиск по сайту

TOP-10 программ
Symantec Norton Ghost 9.0
Partition Magic 8.0.2 Pro
Xilisoft 3GP Video Converter v3.1.7.0616b
Norton AntiVirus 2005
Xilisoft 3GP Video Converter v2.1.52.831b
Антивирус Касперского Personal 5.0.303 beta 2
RAR Password Cracker 4.12
ABBYY PDF Transformer v1.00.820
MP3 To Ringtone Gold v3.02
Mobtime Cell Phone Manager v5.3.1
 
Наши сервисы
Рассылка новостей. Подпишитесь на рассылку сейчас и вы всегда будете в курсе последних событий в мире информационных технологий.
Новостные информеры. Поставьте наши информеры к себе и у вас на сайте появится дополнительный постоянно обновляемый раздел.
Добавление статей. Если вы являетесь автором статьи или обзора на тему ИТ присылайте материал нам, мы с удовольствием опубликуем его у себя на сайте.
 
 

   Интернет технологии -> PHP -> Страница сгенерирована за ...


Страница сгенерирована за ...

В этом небольшой статье я хочу рассказать вам, как засечь время выполнения вашего кода на PHP. Многие называют этот прием подсчетом времени генерации страницы. Мне это название также пришлось по душе, так что в дальнейшем буду употреблять его чаще.

Не говорите мне, что вы ни разу не видели примерно такой надписи на сайтах:

Страница сгенерирована за 0.235467 секунд

или

Page generated in 0.235467 seconds

Прикольная вещь, однако. Не ошибусь, если вы тоже хотите реализовать её на своем сайте? Хотите - тогда поехали.

Сначала объясню логику работы такой фишки. Она очень проста:

  • Перед выполнением того кода, который мы хотим засечь, считываем текущее время.
  • После выполнения кода, опять же считываем текущее время и выводим разницу получившихся времен.

Рекомендую сразу части скрипта, отвечающие за подсчет времени в начале и в конце кода, соответственно, вынести в отдельные файлы и вставлять их по мере необходимости.

Итак, код скрипта start.php, который подсчитывает текущее время (вставлять в том месте, откуда начинаем подсчет, т.е. где-то в начале страницы).

<?
#------ файл start.php

// считываем текущее время
$start_time = microtime();
// разделяем секунды и миллисекунды (становятся значениями начальных ключей массива-списка)
$start_array = explode(" ",$start_time);
// это и есть стартовое время
$start_time = $start_array[1] + $start_array[0];
?>

Стартовое время подсчитали. Теперь код файла end.php, который также подсчитывает текущее время, а затем выводит разность этого времени от подсчитанного в файле start.php, т.е., по сути дела, и выводит время генерации страницы.

<?
#------ файл end.php

// делаем то же, что и в start.php, только используем другие переменные
$end_time = microtime();
$end_array = explode(" ",$end_time);
$end_time = $end_array[1] + $end_array[0];
// вычитаем из конечного времени начальное
$time = $end_time - $start_time;
// выводим в выходной поток (броузер) время генерации страницы
printf("Страница сгенерирована за %f секунд",$time);
?>

В принципе, все. Файл start.php вставляйте туда, откуда хотите начинать засекать время; end.php - где захотите "остановить ваш секундомер". Вставки файлов можете осуществлять, к примеру, инструкцией include();

Дело сделано... однако, наверняка вы хотите разобраться, как же работает то, что мы написали. Лично я не люблю юзать чужие наработки в принципе. А если и юзаю, то, обязательно разобравшись в их работе. Далее объясню вам, для чего служат функции, которые мы применяли в примерах и дам несколько советов.

Функции, использовавшиеся в примерах
  • string microtime() - возвращает строку в формате: "микросекунды секунды", в которой секунды - timestamp, возвращаемый функцией time(), а микросекунды - дробная часть секунд, служащаяся для более точного измерения промежутков времени. Функция работает только в системах, которые поддерживают системный вызов gettimeofday(), т.е. практически во всех.
    • Замечание: timestamp - формат времени, который равняется "кол-ву секунд, прошедших с полуночи 1 января 1970 года по Гринвичу до настоящего момента". Этот формат данных принят в осях UNIX, как стандартный. Универсальное и удобное представление, с которым вы еще не раз столкнетесь.
  • array explode(string separator, string string [, int limit]) - получает строку, заданную в её втором аргументе и пытается найти в ней подстроки, равные первому аргументу. Затем по месту вхождения этих подстрок строка "разрезается" на части, помещаемые в массив-список, который и возвращается. Если задан параметр limit, то учитываются только первые limit-1 участков "разреза". Таким образом, возвращается список из не более чем limit элементов.
    • Замечание: string implode(string glue, array pieces) (синоним - join()) - ф-и, полностью противоположные по значению ф-и explode(). Они берут ассоциативный массив (как правило, это список) pieces и склеивают его значению в единую строку при помощи "строки-клея" glue.
  • void printf (string format [, mixed args]) - ф-я, полностью аналогичная своей C версии. Она выводит в броузер строку, составленную на основе строки форматирования, содержащей некоторые специальные символы, которые будут впоследствии заменены на значения соответствующих переменных из списка аргументов. Параметры:
    format - строковой формат вывода данных
    args - аргументы для форматирования
    Я не буду подробно останавливаться на этой функции, так как её полное описание достаточно объемное (ну не так уж чтобы...), да и сама функция очень мощная (медлительная в том числе). Скажу лишь, что в нашем случае мы используем её для того, чтобы при выводе преобразовать получившееся "время генерации страницы" до числа с плавающей точкой (x.xxxxxx). Т.е. чтобы после точки содержалось не более 6 символов.
    • Замечание: можно было и воспользоваться простым вызовом функции типа echo() или print(). Однако в этом случае, выведется число с большим количеством цифр после плавающей точки!
Советы (а точнее совет=)
  • Примеры можно использовать для засекания выполнения любого скриптового фрагмента. Т.е., совсем необязательно то, что на сайте засекается полностью генерация динамичной страницы. Некоторые мухлюют, засекая вообще не понятно что; поэтому не приходиться удивляться, что сайт, грузящийся со скоростью таракана, сгенерирован за удивительно малое время. В принципе, время генерации и время вывода страницы - совсем разные вещи.

На этом я прощаюсь с вами. Учил вас засекать время генерации страницы Makswell =%)

Автор: Makswell
Источник: www.progers.ru

Ссылки по теме
Чтение почты через Web-интерфейс
Полезные скрипты на PHP
PHP и формы
Почтовые функции в РНР
Отправка электронной почты с помощью PHP
 

Компьютерная документация от А до Я - Главная

 
Популярные книги

Введение в ИТ Сервис-менеджмент

Подробнее

Обработка цифровых фотографий (+CD)

Подробнее

Общая информатика. Универсальный курс

Подробнее

 

 
Новости ИТ
21.11.2008  Thunderbird 2.0.0.18
21.11.2008  Miranda IM 0.7.13
21.11.2008  Dr. Web 5 Beta
21.11.2008  KAV/KIS 2009 8.0.0.506
21.11.2008  avast! 4.8 (1290)
21.11.2008  Radmin 3.3
21.11.2008  DVR-X162J - новый внешний DVD-привод от Pioneer
21.11.2008  Дизайнерские системные блоки от Smooth Creations
21.11.2008  SPARKLE представляет Calibre P980X+, видеокарту с необычным дизайном
21.11.2008  Titan представляет куллер для Intel i7
21.11.2008  Компактный ПК для дома Acer Aspire X3200 - в России
21.11.2008  Hitachi Data Systems объявляет о новом плане инвестиций в России и странах СНГ
21.11.2008  Назначен новый президент Microsoft в России
21.11.2008  Mustek: новые цифровые видеокамеры начального уровня
21.11.2008  Серверные Core i7 - быстры ли они? Да, и очень, судя по тестам в SPECfp
21.11.2008  NETGEAR: акция для партнеров
21.11.2008  Персональные фотокарты на Яндексе
21.11.2008  Программа для стартапов Microsoft BizSpark анонсирована в России
21.11.2008  Средства защиты от утечек конфиденциальных данных Symantec DLP 8.1 теперь и в России
21.11.2008  Axis: первый 6-канальный IP-видеосервер с поддержкой H.264/M-JPEG
 
Полезно

 
Copyright © CompDoc.Ru
При цитировании и перепечатке ссылка на www.compdoc.ru обязательна. Карта сайта.
 
Rambler's Top100