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

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

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


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

Комментарии

Попробовал у себя.
Сначала посыпала куча строк типа
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.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

3 сентября 2006 в 14:31

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

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

3 сентября 2006 в 15:22

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

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

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

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

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

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

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

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

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

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));
    } ?>
6 сентября 2006 в 2:48

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

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

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

5 сентября 2006 в 15:16

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

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

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

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

то есть,
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 теги... не знал что так нельзя... в Опере и ИЕ нормально показывает...

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

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

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

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

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

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

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

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

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

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...

7 сентября 2006 в 0:26

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

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

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

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

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

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

так можно.

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

просто мне 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 модуле у меня по-другому показывалось...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

хм... сейчас в мозилле всё равно ошибка:
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( как будет?

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

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

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

 print "Blah-blah $diff blah";

И всё.

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

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

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

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

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

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

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

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

потестировав модуль, увидел, что нормально он работать не хочет... выдаёт ошибку...
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
не показывается...

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

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

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

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

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

<?php print devel_timer(); ?>

Есть в page.tpl.php?

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

[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]
да, если это добавить, то всё нормально... работает...

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

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

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

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

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

<?php print pagetime_exit(NULL); ?>

(без $destination)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

19 сентября 2006 в 10:22