【问题标题】:Real time graphing with flot, mysql, php用flot、mysql、php实时绘图
【发布时间】:2011-03-21 23:21:33
【问题描述】:

我正在尝试绘制实时图表,因为我的 mysql 表不断插入值,例如引用的移动图表 http://kalanir.blogspot.com/2009/11/how-to-plot-moving-graphs-using-flot.html 这些值实际上来自一个二氧化碳传感器,该传感器使用 co2 值和位置 id 更新表的值。我把她的 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?

感谢您的帮助

【问题讨论】:

    标签: php mysql ajax flot


    【解决方案1】:

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

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

    【讨论】:

    • 有没有不那么带宽的技术?或者我可以做些什么来添加到预先存在的代码中?
    • @Sunny 这里有一个权衡,您希望它越“实时”,您将使用的带宽就越多。没有办法解决它。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-08
      • 2016-06-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多