Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Кэширование или что-то другое... 
:(
    Опции темы
ArsNov
Дата 23.3.2006, 23:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 148
Регистрация: 1.9.2005

Репутация: нет
Всего: 1



Проблема такая:

Грубо говоря есть php скрипт который генерит таблицу такого вида:

Код

<table>
<tr>
      <td> "Распечатка $s   "</td>
      <td> "А тут оперции с $s ($s=$s-1) +вывод информации за $s " </td>
</tr>
</table>


В левой(первой) ячейке распечатывается переменная $s (типа деньги), а в правой производятся операции с этими деньгами+распечатка всякой побочной информации за эти деньги.
Получается, что левая ячейка прорисовывается раньше правой, и вычисления выполняются позже.
Мне необходимо сделать так, чтобы распечатанная в левой ячейке информация не запаздывала от вычислений.

Чего то слышал про кэширование, буферизацию вывода, но так и не понял как это тут применить...
Как быть?
smile
Надеюсь понятно сформулировал.

PM MAIL ICQ   Вверх
GePo
Дата 23.3.2006, 23:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 166
Регистрация: 30.3.2003
Где: Москва

Репутация: 1
Всего: 3



думаю, кеширование и буферизация, это не то, что тебе надо. А надо тебе понять простую вещь - php скрипт - это в первую очередь скрипт. В каком порядке ты считаешь, зависит только от тебя. Также только от тебя зависит, в каком порядке ты выводишь. Грубо говоря, если ты хочешь, чтобы в левой колонке были результаты вычислений из правой, то тебе сначала нужно провести эти вычисления, запомнить их, вывести в левой, вывести в правой.
--------------------
PM MAIL WWW   Вверх
ArsNov
Дата 23.3.2006, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 148
Регистрация: 1.9.2005

Репутация: нет
Всего: 1



Спасибо! Я я это уже понял, только поздновато оказалось ))
Скрипт не маленький и очень накрученый, чего то менять очень тяжело. Неужели нету никаких выходов..?

PM MAIL ICQ   Вверх
PARROT
Дата 24.3.2006, 00:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2339
Регистрация: 5.1.2005
Где: Спб-ЦарьГрад

Репутация: 23
Всего: 50



Нужен весь скрипт, тогда может быть найдеться выход.
Добавлено @ 00:09
Откуда берется эта $s?
Напиши алгоритм действий.


--------------------
Безумный утешается прошедшим, слабоумный - будущим, умный - настоящим!
PM MAIL   Вверх
ArsNov
Дата 24.3.2006, 00:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 148
Регистрация: 1.9.2005

Репутация: нет
Всего: 1



Сильно упрощенная схема выглядит так:
Код

…
print “<table>”;
print "<tr><td>.zagolovok()."</td></tr>"; 
print "<tr><td>”.menu(2)."</td></tr>";
print “<tr><td>”.center($id).”</td></tr>”;
print “<tr><td>”.zadnica().”</td></tr>”;
print "</table>";
…


Вот в функции zagolovok печатается переменная которая хранится в сессии
А в функции center($id) идет как раз вычисление этой переменной и занесение её в сессию. Точнее даже не в самом center($id) а в присоединенных через него скриптах.

Function center($id)
{
//Функция делает include скрипта который распечатывает инфу и просчитывает $s
}

Вот и получается что распечатка раньше вычислений.
Вот такие вот грабли блин…

PM MAIL ICQ   Вверх
ArsNov
Дата 24.3.2006, 00:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 148
Регистрация: 1.9.2005

Репутация: нет
Всего: 1



И еще к этим граблям добавляется то, что в этом center($id) инклудится достаточно мощная структура, переность которую в другое место очень тяжело.. smile
PM MAIL ICQ   Вверх
ArsNov
Дата 24.3.2006, 01:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 148
Регистрация: 1.9.2005

Репутация: нет
Всего: 1



Всё, проблема решена через кэширование, кому интересно:

Код

…
//Получили в буфер результат работы всех подключенных в center скриптов и за одно все переменные нужные записали в сессию
ob_start(); 
center($menu_id);
$buffer = ob_get_contents();
ob_end_clean(); 



print “<table>”;
print "<tr><td>.zagolovok()."</td></tr>"; 
print "<tr><td>”.menu(2)."</td></tr>";
print “<tr><td>”.print $buffer.”</td></tr>”;     //А здесь просто вывели результат буферизации
print “<tr><td>”.zadnica().”</td></tr>”;
print "</table>";
…

smile

Это сообщение отредактировал(а) ArsNov - 24.3.2006, 01:52
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0451 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.