Page execution time was 2696.98 ms это нормально?

Главные вкладки

Аватар пользователя B.X B.X 23 августа 2006 в 23:19

Попробовал модуль devel, так много оказывается обращений к базе, на каждой странице "время исполнения страницы" меньше чем 362.76 ms вообще не было (при открытии форумов), на любой другой страницы 460-560 или больше... это нормально? или много?


на других сайтах встречал такое обозначение: Page execution time : 0.00019097328186035 ms
сколько это будет и какая разница?

Комментарии

Аватар пользователя dyp@drupal.org dyp@drupal.org 24 августа 2006 в 0:10

Попробовал у себя.
Сначала посыпала куча строк типа
Notice: Undefined index: бла бла бла
Page execution time за 4000 ms перевалил
Далее для тех кто в танке и на Денвере Smile
Чтобы такого небыло надо в php.ini закомментировать строку
error_reporting = E_ALL ; & ~E_NOTICE
и раскомментировать
error_reporting = E_ALL & ~E_NOTICE
После этой процедуры:
Executed 353 queries in 670.7 milliseconds. Page execution time was 1715.34 ms.

Аватар пользователя rgb rgb 29 августа 2006 в 11:24

У меня тоже большие величины этого дела были и запросов на страницу по 3-4 сотни. В общем виновытым оказался я сам Smile

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

Во-вторых, мои самописные модули были не очень правильно написаны. Переделал (в основном ввел кэширование) отчего среднее кол-во запросов к БД снизилось до 25-40 (примерно) на страницу. Время генерации, соответствено, упало и памяти под MySQL с PHP стало уходить меньше. (Это было на Дрюпале 4.6, модулей было где-то в районе 38-и; на drupal.htdogs.ru, кстати, это обсуждалось, если интересно).

Вообще devel-ом просматривать это хорошо, но ещё и профайлер помогает (я пользую XDebug + WinCacheGrind) - очень хорошо видно куда время девается. Для Дрюпала 4.6, например, очень большая часть его уходит на период инициализации (наверное поэтому в 4.7 это дело на несколько ступеней разблили) и "отрисовку" страницы (тут в основном из-за блоков).

Разумеется, то что я сказал верно для моего случая, у Вас это может быть и не так.

Аватар пользователя B.X B.X 29 августа 2006 в 13:17

я вообще не об этом, а о том, что на некоторых сайтах Page execution time : 0.00019097328186035 ms, а на Друпале Page execution time was 2696.98 ms... и это не на Денвере а на хостинге...

Аватар пользователя rgb rgb 1 сентября 2006 в 15:38

B.X wrote:
…что на некоторых сайтах Page execution time : 0.00019097328186035 ms, а на Друпале Page execution time was 2696.98 ms…

Печальная статистика... А примеров подкиньте, что б глянуть где такая отдача?

Отвечая на Ваш вопрос: Page execution time == 2696.98ms - это ненормально, это многовато. Хотя тут многое "зависит от". Настройки Дрюпала глянуть надо, сервера (как HTTP, так и DB)...

Аватар пользователя B.X B.X 1 сентября 2006 в 15:45

я пробовал devel модуль, проблема ещё в том, что сам этот модуль также себя считает, поэтому конечно, не всё так плохо, но иногда идёт большая задержка перед открытием страницы...
и ещё, если кэш отключен, то Друпал каждый раз в него что-то добавляет, если включен, то не каждый раз, а изредка... (у меня отключен), вот и получается, что на некоторых страницах так много, хотя 2696.98ms это максимум, обычно 596.98ms (это на обычной странице, где не слишком много информации), но я не проверял на страницах добавления комментариев, а они иногда вообще по несколько секунд ничего не отвечают...

Аватар пользователя Dan Dan 2 сентября 2006 в 11:23

На китайских дешёвых магнитофонах написано: 200 Ватт, а на моих старых советских немаленьких колонках - 40 Ватт. Надо ли говорить, что это совершенно разные цифры? Smile

Сначала нужно разобраться, что означает каждая из цифр, а потом уже и сравнивать.

Аватар пользователя rgb rgb 3 сентября 2006 в 1:27

Вот для того, что бы разобраться, что там за цифры нарисованы, я и попросил уважаемого B.X пару ссылок на эти странички...

2B.X: Ссылки можете предоставить?

Аватар пользователя B.X B.X 3 сентября 2006 в 2:25

все тесты проводил на своём сайте с включённым модулем, devel... я его удалил, так что сейчас нет возможности... да и зачем? если просто потестить, так для этого любой Друпал подойдёт... у них у всех примерно одинаковая загрузка на всех сайтах (если модулей стандартное кол-во), но если сайт оптимизирован и выкинуто всё лишнее, тогда - нет...

Аватар пользователя rgb rgb 3 сентября 2006 в 14:31

Я имел ввиду ссылки вот на эти сайты...

B.X wrote:
на других сайтах встречал такое обозначение: Page execution time : 0.00019097328186035 ms

Аватар пользователя coyotle coyotle 3 сентября 2006 в 15:22

Вот например http://e107.org.ru/
Страница создана за: 0.4100 секунд(ы) (410 мс). SQL запросов: 56.

Это не 160 запросов, как в друпале и время очень отличается. Хотя сам e107 мне не нравится....

Аватар пользователя moonman moonman 3 сентября 2006 в 16:21

Вообще старанен сам факт того, что для определения такой простой вещи требуется ИНСТАЛИРОВАТЬ целый модуль.
Это конечно прикол ещё тот...
Наверно разработчики Друпала любят трудности Smile

Аватар пользователя rgb rgb 4 сентября 2006 в 10:21

Про devel.module: вообще говоря, модуль этот предназначен для разработчиков и показ времени это одна из его фич (не самая важная).

Время генерации можно посмотреть и другими способами: начало отработки сам Дрюпал фиксирует и можно прямо в теме считать и выводить это время.

Аватар пользователя Dan Dan 3 сентября 2006 в 16:30

Не скажи. Этот модуль тоже жрёт ресурсы и если тебе время генерации страницы не нужно, зачем расходовать ресурсы понапрасну.

Аватар пользователя B.X B.X 5 сентября 2006 в 1:20

[b]на других сайтах встречал такое обозначение: Page execution time : 0.00019097328186035 ms[/b]
если честно, я уже и не помню, где я это нашёл, просто забил в Яндексе "Page execution time" и он мне выдал результаты...
[b]можно прямо в теме считать и выводить это время[/b]
не подскажете как? что прописывать (код), куда?

Аватар пользователя rgb rgb 6 сентября 2006 в 2:48

Quote:
не подскажете как? что прописывать (код), куда?

Я наверное погорячился с утверждением, что прописать можно прям в page.tpl.php Wink Т.е. прописать туда можно и получить результат можно, но точнее он будет, если производить подсчёт в hook_exit().

Итак, идём в devel.module, копируем оттуда код ф-ции devel_timer() и далее у нас 2 варианта:

  1. Вставляем этот код куда-нибудь в район $footer_message в page.tpl.php
  2. Делаем ма-а-аленький модуль (например, pagetime.module) и перехватываем в нём хук 'exit':
    <?php function pagetime_exit($destination = NULL) {
      global $timer;
      list($usec, $sec) = explode(' ', microtime());
      $stop = (float)$usec + (float)$sec;
      $diff = round(($stop - $timer) * 1000, 2);
      print t(' Page execution time was %time ms.', array('%time' => $diff));
    } ?>
Аватар пользователя emzi emzi 5 сентября 2006 в 14:10

частично решилось периодической оптимизацией таблиц, но всё равно до конца от тормозов избавиться не удалось. На слабых машинах тормозит даже с 2-3мя страницами контента, практически без доп. модулей.

Аватар пользователя B.X B.X 5 сентября 2006 в 15:16

насколько я знаю, самый затратный из всех стандартных мрдулей - это форум... так же постоянно грузятся модули block и locale... что ещё? на хостинге Servage есть-таки акселератор для PHP, что меня и спасает (сайт открывается достаточно быстро, засчёт кэширования вывода скриптов), но что на других хостингах без этого делается - не знаю, для Друпала всё-таки нужен или отдельный сервер или виртуальный по-возможностям сравнимый с выделенным...

Аватар пользователя emzi emzi 5 сентября 2006 в 15:29

на основном сайте пришлось отключить - выдает ошибку:
gzinflate(): data error in /var/www/drupal/includes/bootstrap.inc on line 532

по ощущению, возникает, если на одну и ту же страницу ходить попеременно Iexplorer'ом и Firefox'ом
кое-как справляюсь за счет собственноручно написаного вывода основного контента. В последнее время мне временами кажется, что в 4.7 поставили какую-то "закладку" для создания тормозов и глюков.

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

Аватар пользователя B.X B.X 6 сентября 2006 в 21:34

то есть,
1. вставляем в район $footer_message в page.tpl.php:
<?php
function devel_timer() {
$time = timer_read('page');
return t(' Page execution time was %time ms.', array('%time' => $time));
}
?>
2. делаем отдельный модуль (включаем его на странице модулей), вставляем в текст модуля только это:
<?php
function pagetime_exit($destination = NULL) {
global $timer;
list($usec, $sec) = explode(' ', microtime());
$stop = (float)$usec + (float)$sec;
$diff = round(($stop - $timer) * 1000, 2);
print t(' Page execution time was %time ms.', array('%time' => $diff));
}
?>
и всё?
[b]Добавлено:[/b]
Ага, понял... один из двух вариантов, то есть или то или это...
создал модуль, работает, можете (кто хочет) посмотреть на моём сайте (ссылка на сайт в профиле)...
[b]Впечатления:[/b]
А ничего так, показывает Page execution time was 1.1575661213E+12 ms.
на главной странице... вроде не так и много...
[b]Ошибки:[/b]
В Мозилле пишет ошибку Fatal error: Call to undefined function: t() in
потому что я в функцию добавил html теги... не знал что так нельзя... в Опере и ИЕ нормально показывает...

Аватар пользователя rgb rgb 6 сентября 2006 в 22:58

Да - либо так, либо сяк. Вариант "так" (это который 1) - не совсем точный, тогда как второй вариант - немного точнее - он учитывает некоторые действия Дрюпала после формирования (выдачи?) страницы.

Quote:
А ничего так, показывает Page execution time was 1.1575661213E+12 ms.

Хм.. что-то у меня не так (в смысле, не в таком формате выводит).

Quote:
В Мозилле пишет ошибку Fatal error: Call to undefined function: t() in

Да это ж серверная ошибка, от браузера не зависит. И ругается-то на "неопределённую ф-цию", может просто параметры при вызове напутали?

Аватар пользователя B.X B.X 6 сентября 2006 в 23:09

[b]"Да это ж серверная ошибка, от браузера не зависит."[/b]
выходит что зависит...
во всяком случае, в Опере и ИЕ её ни разу не видел (смотрю сейчас все страницы), а в Мозилле иногда (очень редко) всё показывается нормально, а обычно показывает ошибку... можете сами посмотреть...
от хтмл не зависит, убрал хтмл, весь ваш код который на странице показан включил и вот в Мозилле всё равно эта ошибка... хм...
[b]Хм.. что-то у меня не так (в смысле, не в таком формате выводит).[/b]
а в каком?
зависит наверное от настроек сервера...
вот, можете [url=http://harzah.net]здесь[/url] посмотреть...

Аватар пользователя rgb rgb 7 сентября 2006 в 0:26

Quote:
выходит что зависит…
во всяком случае, в Опере и ИЕ её ни разу не видел

Да не - не дОлжно так быть. Скорее всего это из-за кэширования. Я сейчас сходил-глянул и у меня это всё время показывается (я зашёл Оперой, и анонимом, конечно).

Я только сейчас понял вот что: мы с Вами говорим немного о разных вещах: я про Дрюпал 4.6, а Вы - про 4.7 Smile

Начнем с того, что в 4.7 модуль будет вот такой:

<?php
function pagetime_exit($destination = NULL) {
  print t('Page execution time was %time ms.'
    , array('%time' => timer_read('page')));
}
?>

У меня работает.

Quote:
от хтмл не зависит, убрал хтмл, весь ваш код который на странице показан включил и вот в Мозилле всё равно эта ошибка… хм…

Тут я вообще не пойму в чем причина: вроде ж t(..) определена в common.inc...

Аватар пользователя dyp@drupal.org dyp@drupal.org 6 сентября 2006 в 23:28

t имхо некчему, хотя конечно так правильно. можно просто написать print 'время загрузки' $diff зачем нам перевод запрашивать?

Аватар пользователя B.X B.X 6 сентября 2006 в 23:30

то есть, можно просто print 'Page execution time was %time ms.'?
сейчас попробую...
просто раньше я уже думал об этом, но если пишу print 'Page execution time was %time ms.', array('%time' => $diff); - у меня выводится ошибка...

Аватар пользователя rgb rgb 6 сентября 2006 в 23:40

В принципе да - можно и без t(), но с ней - идеологичеки более верно. Если без неё, то:

print "Page execution time was $diff ms.";

так можно.

Аватар пользователя B.X B.X 6 сентября 2006 в 23:56

просто мне t( не нужно, я перевожу прямо в модулях, без модуля locale... спасибо, сейчас попробую...
[b]Добавлено:[/b]
вот теперь всё работает во всех браузерах...
модуль у меня такого вида:
<?php
function pagetime_exit($destination = NULL) {
global $timer;
list($usec, $sec) = explode(' ', microtime());
$stop = (float)$usec + (float)$sec;
$diff = round(($stop - $timer) * 1000, 2);
print "

Page execution time was $diff ms.

";
}
?>
[b]Добавлено ещё:[/b]
Только странно, что цифры почти не меняются: 1.15757354589E+12
и что за Е+12? как должно быть? в devel модуле у меня по-другому показывалось...

Аватар пользователя rgb rgb 7 сентября 2006 в 0:29

Quote:
Только странно, что цифры почти не меняются: 1.15757354589E+12
и что за Е+12? как должно быть? в devel модуле у меня по-другому показывалось…

Это от того, что для 4.7 по-другому писать надо (см. мой предыдущий пост). Дело в том, что в этом варианте используется global $timer, которой нет в 4.7! Там есть массив $timers вместо этого.

Аватар пользователя rgb rgb 7 сентября 2006 в 0:33

А если Вы не используете t(..), и переводите прям в модулях, то может вы её и из common.inc убрали?

Ну и в модуле тогда надо писать без неё... Ну да Вы это и так поняли Smile

Аватар пользователя B.X B.X 7 сентября 2006 в 0:35

[b]"Я только сейчас понял вот что: мы с Вами говорим немного о разных вещах: я про Дрюпал 4.6, а Вы - про 4.7"[/b]
хех... понятно, спасибо, а я-то думаю, что за дела...
вот, теперь правильно:
Страница сгенерирована за 1211.62 миллисекунд - это много или мало?

[b]то может вы её и из common.inc убрали[/b]
нет зачем? я просто ищу в модулях t( и перевожу на русский и всё...
[b]Добавлено:[/b]
Или вот ещё больше, главная страница выдала такой результат:
Страница сгенерирована за 3062.95 миллисекунд.

Аватар пользователя rgb rgb 7 сентября 2006 в 0:43

Quote:
Страница сгенерирована за 1211.62 миллисекунд - это много или мало?

Это значит, что за 1,2 сек. Много это? Я считаю, что это "зависит от". Надо смотреть что за ф-ционал на сайте? Что за модули включены? Что она странице выводится? Ну и в таком духе...

Если просто так, без учета всего этого, то (IMHO) больше секунды на страницу - это много.

Но повторюсь - зависит от очень многих факторов.

Quote:
нет зачем? я просто ищу в модулях t( и перевожу на русский и всё

Странно тогда, что она у Вас не видится внутри этого модуля (pagetime).

Аватар пользователя rgb rgb 7 сентября 2006 в 0:46

Quote:
Или вот ещё больше, главная страница выдала такой результат:
Страница сгенерирована за 3062.95 миллисекунд.

Много это... Попробуйте что-то поменять, например, кэширование включить.

Аватар пользователя B.X B.X 7 сентября 2006 в 0:47

[b]"больше секнды на страницу - это много. Но повторюсь - зависит от очень многих факторов."[/b]
ясно, но в основном, у меня 600.00-500.00, иногда бывают такие задержки, так что можно считать что у меня Друпал быстро бегает... форум долго открывается, если на странице много комментариев (все 10) и текст темы большой, то вот что она показала:
Страница сгенерирована за 4025.05 миллисекунд.
[b]"Странно тогда, что она у Вас не видится внутри этого модуля (pagetime)."[/b]
кто не видится?

Аватар пользователя B.X B.X 7 сентября 2006 в 1:04

хм... сейчас в мозилле всё равно ошибка:
Fatal error: Call to undefined function: t() in /mounted-storage/home20b/sub001/sc20264-XBHE/www/modules/pagetime/pagetime.module on line 3 (раньше в старой версии для 4.6 было на странице 7)... хм... в Опере всё нормально показывается...
[b]Добавлено:[/b]
а без t( как будет?

Аватар пользователя rgb rgb 7 сентября 2006 в 1:10

Quote:
хм… сейчас в мозилле всё равно ошибка:

Да я ж написал: не используйте t(), делайте по-своему:

 print "Blah-blah $diff blah";

И всё.

Аватар пользователя B.X B.X 7 сентября 2006 в 2:39

спасибо ещё раз, просто для старой версии я понял как, спасибо за примеры, а для новой там всё по-другому, методом аналогии не заменишь... кстати, не хотели бы оформить в модуль и на drupal.org создать проект отдельный? я думаю, многим этот модуль пригодился бы...

Аватар пользователя rgb rgb 7 сентября 2006 в 12:59

Quote:
не хотели бы оформить в модуль и на drupal.org создать проект отдельный? я думаю, многим этот модуль пригодился бы…

Честно говоря, я не думаю, что этот модуль спросом будет пользоваться. Smile

Аватар пользователя B.X B.X 7 сентября 2006 в 19:18

зря вы так думаете, сейчас многие активно переходят на Друпал с других CMS (порталов) в которых этот модуль есть по умолчанию... они-то и будут заинтересованы...

Аватар пользователя B.X B.X 15 сентября 2006 в 1:47

потестировав модуль, увидел, что нормально он работать не хочет... выдаёт ошибку...
Cannot modify header information - headers already sent by (output started at /www/modules/pagetime/pagetime.module:3) in /www/includes/common.inc on line 266.
может можно было сделать модуль, а вывод как-то в тему ввести? а то ошибка нехорошая...
или наплевать на точность и остановиться на
1. вставляем в район $footer_message в page.tpl.php:
<?php
function devel_timer() {
$time = timer_read('page');
return t(' Page execution time was %time ms.', array('%time' => $time));
}
?>
[b]Добавлено:[/b]
не работает эта вставка в page.tpl.php
не показывается...

Аватар пользователя rgb rgb 15 сентября 2006 в 10:39

Quote:
потестировав модуль, увидел, что нормально он работать не хочет… выдаёт ошибку…
Cannot modify header information - headers already sent by...

Это либо Вы где-то пробелы не убрали (после закрывающего '?>', например), либо это следствие каких-то ошибок (предположительно с кешем). У меня модуль стоял и не ругался.

Quote:
не работает эта вставка в page.tpl.php
не показывается…

Извините за дурацкий вопрос: а вывод результата вызова devel_timer() на печать выводится? Что-то типа:

<?php print devel_timer(); ?>

Есть в page.tpl.php?

Аватар пользователя B.X B.X 15 сентября 2006 в 16:21

[b]"Это либо Вы где-то пробелы не убрали"[/b]
специально проверил, пробелов ни до пхп-скрипта, ни после не было...
зато после закрывающего тега хтмл у меня был div, ваш код вставляется после всех тегов, а я хотел его изменить визуально и добавил теги div до и после текста... кэш выключен... то есть так:
<?php
function pagetime_exit($destination = NULL) {
print '

Страница сгенерирована за '.timer_read('page').' миллисекунд.

';
}
?>
[b]"Извините за дурацкий вопрос: а вывод результата вызова devel_timer() на печать выводится? Что-то типа:
<?php print devel_timer(); ?>
Есть в page.tpl.php?"[/b]
нет, конечно... об этом вы раньше не упоминали...
или упоминали, но я не понял...
[b]Добавлено:[/b]
да, если это добавить, то всё нормально... работает...

Аватар пользователя B.X B.X 15 сентября 2006 в 16:50

интересно, вывел для предыдущего модуля (тот что оформлен в модуль) по такому же типу <?php print pagetime_exit($destination = NULL); ?> (чтобы ввести до закрывающего html тега), так теперь две надписи показывает, ту, что я вывел и ту что сама выводится из модуля... хм...

Аватар пользователя rgb rgb 16 сентября 2006 в 0:31

Quote:
по такому же типу <?php print pagetime_exit($destination = NULL); ?>

Смысла я особо не понял, но в любом случае небольшой ликбез по PHP (просто на будущее): в данном примере выполняется вызов ф-ции pagetime_exit(..) и тут лучше писать вот так:

<?php print pagetime_exit(NULL); ?>

(без $destination)

Аватар пользователя B.X B.X 16 сентября 2006 в 4:49

да, но тогда две надписи появляется, одна прямо из модуля, а вторая из вывода файла page.tpl... да я ставил и без $destination, но разницы в пвботе не заметил...

Аватар пользователя rgb rgb 16 сентября 2006 в 23:26

Quote:
да, но тогда две надписи появляется, одна прямо из модуля, а вторая из вывода файла page.tpl…

Да - так и есть. Вы же сами и туда и сюда вставили этот вывод. Что ж тут удивительного?

Аватар пользователя Dan Dan 16 сентября 2006 в 9:59

<?php print pagetime_exit($destination = NULL); ?>
тоже самое, что и
<?php print pagetime_exit(NULL); ?>
Разница в том, что в втором случае сразу вызывается ф-ция с параметром NULL, а в первом, сначала переменной присваивается значение NULL, затем вызывается вызывается функция с параметром $destination, равным NULL. Таким образом результат работы обоих вариантов одинаков. Но лучше использовать вариант 2, т.к. он (в данном случае!) понятней.

Аватар пользователя B.X B.X 17 сентября 2006 в 0:27

а тогда что надо вставить в модуль? если вывод сделать в page.tpl?
например выводим в page.tpl:
<?php print pagetime_exit(NULL);?>
а в код pagetime.module из этого что тогда:
<?php
function pagetime_exit($destination = NULL) {
print '

Страница сгенерирована за '.timer_read('page').' миллисекунд.

';
}
?>
Или, если "или в модуле или в page.tpl", то что тогда в модуле прописать, чтобы он выводил, скажем, сразу после футера, но до закрывающего боди тега?

Аватар пользователя rgb rgb 18 сентября 2006 в 17:11

Quote:
а тогда что надо вставить в модуль? если вывод сделать в page.tpl?

Тогда можно сделать так:

<?php
function pagetime_exit($destination = NULL) {
  return '<div class=page_exec>Страница сгенерирована за '.timer_read('page').' миллисекунд.</div>';
}
?>

Но тогда весь смысл модуля теряется и Вы можете смело этот код перенести в целиком в page.tpl.php.

Quote:
Или, если “или в модуле или в page.tpl”, то что тогда в модуле прописать, чтобы он выводил, скажем, сразу после футера, но до закрывающего боди тега?

Что бы Вы лучше понимали картину, происходит приблизительно следующее: страница формируется ("отрабатывает" код, внутри page.tpl.php) и Дрюпал сохраняет/выводит всё содержимое страницы. И только после этого дёргает hook_exit.

А поскольку pagetime.module реализует именно hook_exit, то и вывод этого модуля (<?php print ... ?>) попадает уже после всего содержимого страницы. Но зато мы имеем почти полное время генерации страницы (== отработки Дрюпала).

В случае же, если Вам надо вывод времени генерации поместить именно внутрь тэга BODY, то у Вас несколько вариантов:

  1. отказаться от этой затеи;
  2. поместить исполняемый код прям в page.tpl.php и мириться с тем, что выводимое время у Вас - не полное (ха! тут можно вручную замерить усреднённо этот недостающий кусок и просто прибавлять его при выводе из page.tpl.php минимизировав таким образом различие! Lol
  3. в модуле перехватывать не 'exit', а 'footer' (<?php function pagetime_exit(..){..} ?> поменять на <?php function pagetime_footer($main = 0){..} ?>) и опять же мириться с тем, что время не полное.
  4. [вариант для мазохистов ;-)]
    • В pagetime.module в обработчике hook_footer формируем случайное число и выдаём в качестве результата работы хука, что то типа:
      <script language="javascript">function showTime(time) { document.write(time); } </script>
      <script language="javascript" src="[случайное число].js"></script>
    • В обработчике hook_exit не выводим ничего, в замеряем время и сохраняем его в файл с именем, сформированным с использованием того случайного числа и с расширением ".js" ("[случайное число].js"); внутри будет что-то типа:

      showTime([time]);

      , где [time] - это и есть время.

    Теперь надо побеспокоиться о том, что бы эти временные JS-файлики убивать периодически (добавляем обработку <?php pagetime_cron(..) {..} ?>).

    Всё! Теперь при формировании страницы, у нас сгенерируется JS-файл с искомым временем, а при загрузке страницы, это время попадёт в нужное место страницы.

    DISCLAIMER: это всё придумывал щас на ходу, что-то может не продумал... может не сразу сработает. Не ругайте Smile

Вот так, приблизительно, обстоят дела...

Аватар пользователя B.X B.X 18 сентября 2006 в 17:18

мда, как всё сложно... есть ещё один вариант, конечно...
убрать из page.tpl закрывающие теги body и html и ввести их в модуль pagetime. Он же на всех страницах последний? Тогда ошибки показывать не будет...

Аватар пользователя rgb rgb 19 сентября 2006 в 10:22

Quote:
убрать из page.tpl закрывающие теги body и html и ввести их в модуль pagetime. Он же на всех страницах последний? Тогда ошибки показывать не будет…

Совсем не факт, что он последним будет отрабатывать. А если ещё будет какой-то модуль, который вздумает писать что-то в обработчике hook_exit? Да и вообще не очень "правильный" подход с точки зрения архитекруты (всё же я бы предпочел не смешивать логику и представление...).

Само собой, что Вы можете это применить, но штука эта весьма специфическая и надо ещё внимательно глянуть - не порушит ли она чего-нибудь.