Обновление графика по таймеру

finder007

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

Всем привет.

Может кто уже сталкивался с подобной проблемой.

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

Имеется сценарий формирующий этот график - пусть он называется graph.php

По таймеру выполняется сценарий javascript выполняющий перерисовку только изобращения на странице.

Приведу сам код функции выполняющей перерисовку

function f_drawGraph(d1,d2,graphId)
{
var dat_beg,dat_end;
var newrow;
var newCell;
var str_graph;

//Элемент на странице с начальной датой для графика
var p1 = document.all(d1);

if (p1!=null)
{
dat_beg = p1.value;
dat_end = p1.value;
}

//Элемент на странице с конечной датой для графика
var p2 = document.all(d2);

if (p2!=null)
{
dat_end = p2.value;
}

//graphId - имя элемента img с нужным графиком на странице
// alert(graphId);

//Область с графиком
var tab_graph = document.all('b' + graphId);

//Таблица в которую выводиться график
if (tab_graph!=null)
{
//Чистка старого содержимого (удаление последней строки)
for (i=tab_graph.rows.length-1; i>=0; i--)
{
tab_graph.deleteRow(i);
}

//Прорисовка нового содержимого (Изображения)
newrow = tab_graph.insertRow();
newCell = newrow.insertCell(0);
str_graph = "<img id='" + graphId + "' src='graph.php?date_beg="+dat_beg+"&date_end="+dat_end+"'>";
newCell.innerHTML = str_graph;
}


//Вариант 2
/*
var p3 = document.all(graphId);
if (p3!=null)
{
p3.src = 'graph.php?date_beg='+dat_beg+'&date_end='+dat_end;
}
*/
}

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

Был вариант еще проще, менять значение SRC у рисунка, но почему то он и при клике на ссылку не пашет.


В файле graph.php с заголовками вроде все в порядке (убрано кэширование)
header("Expires: Thu, 19 Feb 1998 13:24:18 GMT");
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Cache-Control: post-check=0,pre-check=0");
header("Cache-Control: max-age=0");
header("Pragma: no-cache");


Подскажите, что можно еще попробовать чтобы изображение все таки менялось по таймеру.

Использую Апатч 2.2 + ПХП 5 + IE 7
 

dimagolov

Новичок
finder007, ты знаешь что такое MRTG? Если нет, то посмотри как это выглядит тут. Идея в том, что на сервере картинка графика перерисовывается целиком, а на клиенте она регулярно через meta обновляется. Понятно, что частота обновления не большая, обычно раз в 5 минут, но ты не сказал как часто у тебя обновляются данные, которые надо отображать.
 

finder007

Новичок
Привет dimagolov. Про MRTG не знаю. Спасибо за ссылку.
А обновлять надо дважды в минуту.
 

dimagolov

Новичок
ну и. чем не устраивает обновлять через meta refresh? там как раз в секундах задается период обновления.
 

finder007

Новичок
Когда в скрипте писала:
img.src = 'graph.php?date_beg='+dat_beg+'&date_end='+dat_end;
По таймеру почему то не обновлялся график, а когда стала приписывать еще и уникальное значение ( текущее дата время currentdatetime() ) еще дополнительно, то есть
img.src = 'graph.php?date_beg='+dat_beg+'&date_end='+dat_end+'&t='+currentdatetime();
сразу заработало.
 

finder007

Новичок
А я еще хотела спросить есть ли какие нибудь готовые решения, может кто подскажет кто что пользует, для решения подобной задачи. Вывод графика с оперативной информацией по некоторому показателю. Который во времени изменятся и при необходимости можно увеличить фрагмент графика для детализации информации. Допустим произошла авария, на графике видно пик, можно увеличить этот фрагмент, чтобы более подробную инфрмацию получить.
 
Сверху