2010-07-28 37 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())

和是..會有一些帶寬問題,但我認爲它是可管理的。