Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как обновить сгенерированный рисунок?
 
 автор: klex   (25.01.2008 в 22:34)   письмо автору
 
 

Помогите с такой проблемой.
С помощью GD2 рисуется круговая диаграмма на основе двух массивов: массив данных и массив имен в легенде, естессна число элементов одинкаовое...
В итоге делаю:

ImageGIF($im, "gen\diagramma.gif");
echo "<img src=\"gen\\diagramma.gif\" border=\"1\">";


Проблема в том, что при последующем обращении к скрипту если массив данных меняет свои значения, то и картинка должна изменица, но она не меняется - остается предыдущая.....
Приходица рефрешить страницу вручную по F5....
З.Ы. Хедеры уже отосланы.....

   
 
 автор: klex   (26.01.2008 в 21:50)   письмо автору
 
   для: klex   (25.01.2008 в 22:34)
 

Мне говорят нужно отменить кэширование браузером, так ли это и если так то как это сделать?
Или можно как-то заменить хедеры?

   
 
 автор: CrazyAngel   (26.01.2008 в 22:20)   письмо автору
 
   для: klex   (25.01.2008 в 22:34)
 

добавляем get параметр, чтоб бралось не из кеша

<?php
ImageGIF
($im"gen\diagramma.gif");
echo 
"<img src=\"gen/diagramma.gif?".time()."\" border=\"1\">";
?>


а изменить головы можно включив буферизацию

<?php
// В начале скрипта пишем
ob_start();
?>

ob_start()

   
 
 автор: elenaki   (27.01.2008 в 15:31)   письмо автору
 
   для: CrazyAngel   (26.01.2008 в 22:20)
 

ob_start()
=========================
вольный перевод translate.ru:
=========================
Эта функция повернет продукцию buffering на. В то время как продукция buffering активна, никакую продукцию не посылают от подлинника (кроме ударов головой), вместо этого продукция сохранена во внутреннем буфере. Содержание этого внутреннего буфера может быть скопировано в переменную вереницы, использующую ob_get_contents (). К продукции, что сохранено во внутреннем буфере, использование ob_end_flush (). Альтернативно, ob_end_clean () тихо откажется от буферного содержания.

   
 
 автор: Trianon   (27.01.2008 в 16:57)   письмо автору
 
   для: elenaki   (27.01.2008 в 15:31)
 

Помилуйте!

This function will turn output buffering on. While output buffering is active no output is sent from the script (other than headers), instead the output is stored in an internal buffer.

The contents of this internal buffer may be copied into a string variable using ob_get_contents(). To output what is stored in the internal buffer, use ob_end_flush(). Alternatively, ob_end_clean() will silently discard the buffer contents.

Вольный перевод меня:

Эта функция включает режим накапливания выходного потока.
Пока этот режим активен, скрипт не отправляет выходной поток, а накапливает его во внутреннем буфере.

Содержимое этого буфера может быть скопировано в строковую переменную путем вызова функции ob_get_contents().
Чтобы вывести накопленное содержимое в выходной поток, используйте функцию ob_end_flush()
Чтобы отказаться от вывода - очистить буфер, стерев накопленное в нем содержимое - вызовите функцию ob_end_clean()


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

   
 
 автор: jbs   (27.01.2008 в 18:41)   письмо автору
 
   для: Trianon   (27.01.2008 в 16:57)
 

как вариант:

<img src="diagramma.php">


<?php
  $fh 
fopen("diagramma.gif","rb");

  
header("Cache-Control: max-age=0");
  
header("Content-type: image/gif");
  
  
fpassthru($fh);
  
fclose($fh);
?>



можно ещё подсчитать хеш: $md5 = md5_file("diagramma.gif");
и вывести в заголовок, если неошибаюсь так: header("Object-id: $md5");
этот вариант должен быть надёжней, имхо ;)

   
 
 автор: Trianon   (27.01.2008 в 22:14)   письмо автору
 
   для: jbs   (27.01.2008 в 18:41)
 

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

   
 
 автор: Faraon   (27.01.2008 в 19:10)   письмо автору
 
   для: elenaki   (27.01.2008 в 15:31)
 

to elenaki
translate.ru
Полная чушь, и причем технического языка он абсолютно не понимает.
Следствие всего этого, полный идиотизм этого перевода, который можно послать на bash.org.ru :)

   
 
 автор: Freddie_X   (27.01.2008 в 22:53)   письмо автору
 
   для: elenaki   (27.01.2008 в 15:31)
 

....кроме ударов головой....
....Альтернативно, ob_end_clean () тихо откажется от буферного содержания....
Я паццталом... Точно на баш отправить надо... :))))

   
 
 автор: klex   (28.01.2008 в 07:41)   письмо автору
 
   для: CrazyAngel   (26.01.2008 в 22:20)
 

CrazyAngel, бальшое человеческое спасибо.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования