2010-07-28 30 views
0

我试图绘制实时曲线图作为我的MySQL表不断被插入值,比如从 http://kalanir.blogspot.com/2009/11/how-to-plot-moving-graphs-using-flot.html 引用的移动图形绘图值实际上来自二氧化碳传感器,其用co2更新表的值,其中位置id。我改变了她的Math.random下面的代码:实时与海军报,MySQL和PHP

<?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中,服务器只被轮询一次。因此,我只能获得第一个数据的不断读数。有什么方法可以将图更新为表的最后一个值?与阿贾克斯?

感谢您的帮助

回答

2

是的,你可以使用Periodic refresh (Polling)HTTP Streaming

请注意,这两个选项都可能具有相当宽的带宽要求。

+0

有没有那么宽的技术?还是有什么我可以做的只是添加到预先存在的代码? – Sunny 2010-07-28 05:35:22

+2

@Sunny这里有一个权衡,你想要的“实时”越多,你要使用的带宽就越多。没有办法绕过它。 – NullUserException 2010-07-28 14:24:00

0

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

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