Ajax + Jquery + Неведомая Хрень

  • Автор темы lazybiz
  • Дата начала
L

lazybiz

Здрасте!
Есть серьезная проблема для незнающего меня. Описываю (код файлов .css и JQuery, версия которого == 1.6.4 я показывать не буду, т.к. не вижу в этом никакого смысла).

Суть. Есть файл index.php, тут я с помощью Ajax через JQuery осуществляю обновление <div>-а с интервалом в одну секунду содержимым graph.php.
Содержимое index.php:
PHP:
<?php
echo '<!DOCTYPE html>
<html>
<head>
<meta content="text/html; charset=Windows-1251">
<title>iPage</title>
<link rel="stylesheet" type="text/css" href="index.css" />
<script type="text/javascript" src="jquery.js"></script>
</head>
<body>

<div id="info" class="info"></div>

<script>
function show() {
$.ajax( {
url: "graph.php",
cache: false,
success: function( html ){
$( "#info" ).html( html );
}
});
}

$(document).ready( function() {
show();
setInterval( "show()", 1000 );
});
</script>
';

echo '</body></html>';
?>
Содержимое файла graph.php:
PHP:
<?php
echo date("H:i:s");
echo '<br>';
echo '<img src="/graph_1.php">';
?>

Содержимое файла graph_1.php:
PHP:
<?php
...
$im = imagecreatetruecolor( $w, $h );
...
... тра-та-та
...

header( 'Content-type: image/png' );

//	header( 'Cache-control: no-cache' );
//	header( 'Cache-Control: no-cache, must-revalidate' );

imagepng( $im );

//	imagedestroy( $im );
?>

Проблема в том, что изображение, сгенерированное при помощи GD, не обновляется каждую секунду в отличии от страницы graph.php, в которой всё содержимое включая время обновляется без проблем.
Вопрос: что делать?
 
T

tvister

не совсем в тему.
формирования картинок при помощи GB это весьма затратно c точки зрения системных ресурсов сервера ,
и формировать их каждую секунду это смело, тем более если у сайта хорошая посещаемость , то возможны тормоза..
 
L

lazybiz

Я это прекрасно понимаю. В дальнейшем я планирую увеличить интервал. Секунду я поставил в целях отладки.
 
L

lazybiz

Проблема решена. Оказывается что изображение кешируется, для обхода этого необходимо применить нечто следующее:
PHP:
	echo '<img src="/graph_1.php?'.rand().'">';

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

@rtem

Но тут появляется новая проблема, изображение очень непрезентабельно моргает, буду искать пути обхода.
так это понятно, нужно сделать два img тэга, одни из них все время скрыт, а в другом загружена картинка, вешаем на скрытый img событие load и как только картинка загрузилась в скрытый img, показываем его, а другой скрываем, и все повторяется, по интервалу. Тэги размещаются одни на одном, делаешь класс, что то типа hide, он и скрывает твой img, переходы между тэгами можно оформить анимировано благо jquery это позволяет, как только ненужный тэг сделался скрытым, ему вешаем класс hide, ц второга тэга его удаляем, вот вроде весь фокус, если будут проблемы пиши.
 
L

lazybiz

Хм.. Ход твоих мыслей мне понятен. Будет время - обязательно попробую.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!