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, в которой всё содержимое включая время обновляется без проблем.
Вопрос: что делать?
 
не совсем в тему.
формирования картинок при помощи GB это весьма затратно c точки зрения системных ресурсов сервера ,
и формировать их каждую секунду это смело, тем более если у сайта хорошая посещаемость , то возможны тормоза..
 
Я это прекрасно понимаю. В дальнейшем я планирую увеличить интервал. Секунду я поставил в целях отладки.
 
Проблема решена. Оказывается что изображение кешируется, для обхода этого необходимо применить нечто следующее:
PHP:
	echo '<img src="/graph_1.php?'.rand().'">';

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

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