用flot,mysql,php实时绘图

时间:2010-07-28 05:02:50

标签: php mysql ajax flot

我正在尝试绘制一个实时图形,因为我的mysql表不断被插入值,就像从中引用的移动图形 http://kalanir.blogspot.com/2009/11/how-to-plot-moving-graphs-using-flot.html 这些值实际上来自二氧化碳传感器,该传感器使用位置 id co2 值更新表格的值。我将她的Math.Random更改为以下代码:

<?php $result = mysql_query("SELECT * FROM node1 ORDER BY id DESC LIMIT 1")or die(mysql_error());?>
<?php $row = mysql_fetch_array( $result );?>

var j = "<?php echo $row['co2'];?>";
var next = "<?php echo $row['id'];?>";

for (var i = 0; i < this.xscale - 1; i++) 
{  
  this.array[i] = [i,this.array[i+1][1]];  // (x,y)  
}   
this.array[this.xscale - 1] = [this.xscale - 1,j]; 

但是,当我运行此代码时,第一个值会更改,之后它将保持不变,即使正在更新表的最后一行。 我听说这是因为在php中,服务器只被轮询一次。因此,我只能不断读取第一个数据。有什么方法可以让图表更新到表格的最后一个值?用ajax?

感谢您的帮助

2 个答案:

答案 0 :(得分:2)

是的,您可以使用Periodic refresh (Polling) 要么 HTTP Streaming

请注意,这两个选项对带宽要求都很高。

答案 1 :(得分:0)

你必须做某种轮询。但即使在你这样做之前, 1.创建一个php文件,从db中检索所有重要数据。 2.让该文件以格式化方式回显/返回该数据。 3.让js函数轮询该文件的间隔(在setInterval()中运行的函数)

是的..会有一些带宽问题,但我认为它是可管理的。