• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

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, ц второга тэга его удаляем, вот вроде весь фокус, если будут проблемы пиши.
 
Хм.. Ход твоих мыслей мне понятен. Будет время - обязательно попробую.
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab