Главная | Регистрация | Вход Приветствую Вас Гость | RSS
Меню сайта
Мини-чат
Пожертвование сайту
Опрос
Добавить ли на сайт шаблоны для Joomla, WordPress?
Всего ответов: 1211
Главная » 2009 » Февраль » 22 » Время генерации страницы на РНР
Время генерации страницы на РНР
02:09



В этом небольшой статье я хочу рассказать вам, как засечь время выполнения вашего кода на 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(). Однако в этом случае, выведется число с большим количеством цифр после плавающей точки! 

Советы (а точнее совет=)

Примеры можно использовать для засекания выполнения любого скриптового фрагмента. Т.е., совсем необязательно то, что на сайте засекается полностью генерация динамичной страницы. Некоторые мухлюют, засекая вообще не понятно что; поэтому не приходиться удивляться, что сайт, грузящийся со скоростью таракана, сгенерирован за удивительно малое время. В принципе, время генерации и время вывода страницы - совсем разные вещи. 

Вот, пожалуй и все, что я хотел вам рассказать относительно этой темы.

Источник


Категория: Исходники | Просмотров: 1065 | Добавил: -=FoBoS=- | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа
Гость

Сообщения:

Группа:
Гости
Гость, мы рады вас видеть. Пожалуйста зарегистрируйтесь или авторизуйтесь!
Поиск по сайту
Календарь
«  Февраль 2009  »
ПнВтСрЧтПтСбВс
      1
2345678
9101112131415
16171819202122
232425262728
Друзья сайта
3dnews daily digital digest
Наш баннер
[ Получить код баннера]
Облакто тегов

Для красивого отображения этого блока требуетсяFlash Player 9 или выше.

Кто сегодя был на сайте
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Зарегистрировано на сайте: 14962

Новых сегодня: 0

Новых вчера: 0

Новых за неделю: 0

Новых за месяц: 0

Из них:

Новоприбывших: 14923

Проверенных: 0

Модераторов: 1

Помошник администратора: 1

Администраторов: 1

Из них:

Парней 14327

Девушек 634

1

Каталог webplus.info Проверить PR ТИЦ
Все материалы которые находятся на этом сайте могут быть использованы исключительно в ознакомительных целях! За любое нелегальное использования данных материалов ни администрация сайта ни хостинг-провайдер ответственности не несут! При копировании материала обязательно указывать рабочую ссылку на alltopc.ucoz.ru! Created by -=FoBoS=- © 2008-2024