Расчет времени генерации страницы

Тема в разделе "Программирование", создана пользователем boston, 23.08.2007.

  1. boston
    Offline

    boston Группа локализации

    Регистрация:
    10.10.2005
    Сообщения:
    524
    Симпатии:
    12
    Пол:
    Мужской
    На соседнем фоурме в этой теме: Как определить время генерации страницы? написал полный вариант решения указанной проблемы, думаю вопрос довольно интересный, публикую свой вариант реализации здесь.
    Засучиваем рукова, открываем index.php и дописываем, первый текст - в начало файла:
    Код:
    Код (PHP):
    1. require_once( 'configuration.php' );
    2. // считаем время за которое сгененрированна страница
    3. list($usec, $sec) = explode(" ",microtime());
    4. $sysstart = ((float)$usec + (float)$sec);

    А это дописываем в конец файла index.php:
    Код:
    Код (PHP):
    1. // подсчет времени генерации страницы
    2. list($usec, $sec) = explode(" ",microtime());
    3. $sysstop = ((float)$usec + (float)$sec);
    4. echo '<div id="time_gen">'.round($sysstop-$sysstart,4).'</div>';
    5. doGzip();

    В итоге у нас в самый низ старницы выведется слой с реальным временем генерации страницы.
    Заметьте, старт времени начинается после инклюдинга файлов глобалс и конфигурации, попробуйте сделать выше - результат не получите, точнее получите не такой как надо. Удачи! не забудьте создать копию файлы index.php перед редактированием.
     
    Последнее редактирование: 23.08.2007
  2.  
  3. chilly_bang
    Offline

    chilly_bang Недавно здесь => Cпециалист <=

    Регистрация:
    30.04.2006
    Сообщения:
    1 541
    Симпатии:
    38
    Пол:
    Мужской
    Ответ: Расчет времени генерации страницы

    в какой индекс писать? - шаблона или root? похоже, в root...?
     
  4. Offline

    Sunder Модератор

    Регистрация:
    23.04.2007
    Сообщения:
    152
    Симпатии:
    16
    Пол:
    Мужской
    Ответ: Расчет времени генерации страницы

    Насколько я понял, нужно писать в index.php шаблона.
     
  5. chilly_bang
    Offline

    chilly_bang Недавно здесь => Cпециалист <=

    Регистрация:
    30.04.2006
    Сообщения:
    1 541
    Симпатии:
    38
    Пол:
    Мужской
    Ответ: Расчет времени генерации страницы

    а я почему-то do gZip только в индексе root нашёл...
     
  6. Fanamura
    Offline

    Fanamura Доброта

    Регистрация:
    12.03.2007
    Сообщения:
    5 094
    Симпатии:
    158
    Пол:
    Мужской
    Ответ: Расчет времени генерации страницы

    Вопрос. А зачем это время генерации страницы вообще нужно?)) Никогда не пользовался))
     
  7. AmmiAk
    Offline

    AmmiAk Укротитель браузеров

    Регистрация:
    25.07.2007
    Сообщения:
    629
    Симпатии:
    34
    Пол:
    Мужской
    Ответ: Расчет времени генерации страницы

    Это применяется для оценки скорости загрузки сайта при тех или иных условиях подключения к Интернету - на выделенном канале значение не составляет и одной доли секунды, на Dial-Up - приличная циферка. :)<
     
  8. OlegM
    Offline

    OlegM Russian Joomla! Team Команда форума

    Регистрация:
    12.04.2007
    Сообщения:
    4 311
    Симпатии:
    375
    Пол:
    Мужской
    Ответ: Расчет времени генерации страницы

    Нет. Это время выполнения скриптов - от запроса (почти) до полной генерации страницы
     
  9. Fanamura
    Offline

    Fanamura Доброта

    Регистрация:
    12.03.2007
    Сообщения:
    5 094
    Симпатии:
    158
    Пол:
    Мужской
    Ответ: Расчет времени генерации страницы

    Ясно, спасибо. Есть ли какие-либо крайние значения ? Скажем так, предельно допустимые?
    PS: если не брать в расчет время на выполнение скрипта на хостинге.
     
  10. Offline

    CyberMax Недавно здесь

    Регистрация:
    09.03.2008
    Сообщения:
    6
    Симпатии:
    0
    Пол:
    Мужской
    Ответ: Расчет времени генерации страницы

    Как это сделать для Joomla 1.5?
     
  11. Physicist
    Offline

    Physicist Недавно здесь

    Регистрация:
    12.09.2006
    Сообщения:
    116
    Симпатии:
    10
    Пол:
    Мужской
    Ответ: Расчет времени генерации страницы

    А я всегда думал, что при помощи mosProfiler это делается проще:
    Код (PHP):
    1. $prof = new mosProfiler();
    2. /*.......*/
    3. echo $prof->mark('');
     
  12. Offline

    CyberMax Недавно здесь

    Регистрация:
    09.03.2008
    Сообщения:
    6
    Симпатии:
    0
    Пол:
    Мужской
    Ответ: Расчет времени генерации страницы

    С mosProfiler вобще ошибку выдает.
    А с microtime работает не правильно.
    Подскажите если знаете как сделать?
     
  13. Physicist
    Offline

    Physicist Недавно здесь

    Регистрация:
    12.09.2006
    Сообщения:
    116
    Симпатии:
    10
    Пол:
    Мужской
    Ответ: Расчет времени генерации страницы

    Какую ошибку и куда писал код?
     
  14. Offline

    CyberMax Недавно здесь

    Регистрация:
    09.03.2008
    Сообщения:
    6
    Симпатии:
    0
    Пол:
    Мужской
    Ответ: Расчет времени генерации страницы

    Ошибка

    Fatal error: Cannot instantiate non-existent class: mosprofiler in d:\serv\www\cms\joomla15\index.php on line 2

    Писал в index.php в тот что в корне (из ошибки видно), во вторую строку и в последнюю.
    Это ведь в Joomla1.5 в шаблон вообще не имеет смысла это писать?


    Нашел несколько вариантов этих записей те что не выдают такую ошибку:

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

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

    2.
    $start = explode(" ", microtime());
    $start = $start[1] + $start[0];
    sleep(1); //SOME CODE HERE

    $end = explode(" ", microtime());
    $end = $end[1] + $end[0];
    echo ($end - $start);

    3.
    list($usec, $sec) = explode(" ",microtime());
    $sysstart = ((float)$usec + (float)$sec);

    list($usec, $sec) = explode(" ",microtime());
    $sysstop = ((float)$usec + (float)$sec);
    echo '<div id="time_gen">'.round($sysstop-$sysstart,4).'</div>';

    4.
    $part_time = explode (" ", microtime());
    $begin_time = $part_time[0] + $part_time[1];

    $part_time = explode (" ", microtime());
    $end_time = $part_time[0] + $part_time[1];
    echo $end_time - $begin_time;

    5.
    define("START_TIME", microtime(true));

    printf("Page generated: %.5f sec", microtime(true)-START_TIME);

    но и работают неправильно.
    Первые четыре выдают Page generated 1205098714,080344 sec
    а пятая похожа на рабочую но иногда выдает с минусом результат.

    Может подскажете как сделать рабочую такую запись?

    P.S. А прикольно смайл получился :)
     
    Последнее редактирование: 10.03.2008
  15. Physicist
    Offline

    Physicist Недавно здесь

    Регистрация:
    12.09.2006
    Сообщения:
    116
    Симпатии:
    10
    Пол:
    Мужской
    Ответ: Расчет времени генерации страницы

    Класс mosProfiler только в Joomla!1.0.x есть.
    В Joomla!1.5 аналогичную функцию выполняет класс JProfiler:
    Код (PHP):
    1. jimport( 'joomla.utilities.profiler' );
    2. $prof =& JProfiler::getInstance();
    3. /*.......*/
    4. echo $prof->mark('');

    PS. Обрамление div'ом можно убрать так:
    Код (PHP):
    1. echo strip_tags( $prof->mark('') );
     
    Последнее редактирование: 10.03.2008
  16. Offline

    CyberMax Недавно здесь

    Регистрация:
    09.03.2008
    Сообщения:
    6
    Симпатии:
    0
    Пол:
    Мужской
    Ответ: Расчет времени генерации страницы

    Fatal error: Call to undefined function: jimport() in d:\serv\www\cms\joomla15\index.php on line 2 :hz:
     
  17. Physicist
    Offline

    Physicist Недавно здесь

    Регистрация:
    12.09.2006
    Сообщения:
    116
    Симпатии:
    10
    Пол:
    Мужской
    Ответ: Расчет времени генерации страницы

    Слишком рано вызываете. Вызывайте после строки
    Код (PHP):
    1. require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );

    PS. А может быть, будет работать даже без вызова jimport().
     
  18. Offline

    CyberMax Недавно здесь

    Регистрация:
    09.03.2008
    Сообщения:
    6
    Симпатии:
    0
    Пол:
    Мужской
    Ответ: Расчет времени генерации страницы

    Таки да, теперь работает и результаты похожи на настоящие :gratitude:
    Вот теперь явно вижу что Joomla1.5 медленее работает чем Joomla 1.0.12

    Нет без вызова jimport() не работает. Это ваша запись.

    Зато те четыре которые выдавали Page generated 1205098714,080344 sec
    если начало их вставлять после строки

    require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );

    то тоже нормально работают
    (во второй только нужно вместо sleep(1) написать sleep(0) или вообще без этой строки)
    В итоге имеем 5 вариантов записи для подсчета времени генерации страницы для Joomla 1.5 :yahoo:
     
    Последнее редактирование: 10.03.2008
  19. Offline

    AlFil Недавно здесь

    Регистрация:
    07.08.2007
    Сообщения:
    3
    Симпатии:
    1
    Ответ: Расчет времени генерации страницы

    Вариант проверенный на 1.5.4, добавляем в корневой index.php
    Код (PHP):
    1. require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
    2.  
    3. // Dop1 Начало подсчета времени генерации
    4. jimport( 'joomla.error.profiler' );
    5. $prof =& JProfiler::getInstance();
    6. // Dop1


    и

    Код (PHP):
    1. echo JResponse::toString($mainframe->getCfg('gzip'));
    2.  
    3. // Dop2 Вывод времени генерации
    4. ?><!--<?php echo strip_tags( $prof->mark('Information') );?> --><?php
    5. // Dop2


    На странице ничего не светиться, а посмотреть все можно в конце исходника страницы.
    Например по правой кнопке мыши в IExplorer и "Просмотр HTML кода"
    или <Ctrl>+<F3> в Opera
    или ...
     
    bork нравится это.

Поделиться этой страницей

Загрузка...