如何从文本文件更新实时图表?

时间:2012-11-30 07:46:08

标签: php html ajax solaris

我打算在不刷新页面的情况下从文本文件中显示on.php / html的实时图表。目前,我在以下过程中遇到了问题。

源文件:包含来自solaris服务器的数据的.txt文件。

1)定期向服务器询问solaris服务器的数据。 (假设目标文件夹指定为/ home / sadm / htdocs / 00000001 / updateShop)

2)从文本文件(inventory.txt)

中检索数据

3)解析数据以添加新行    例如。从(2008-1-6:33322:39463)文本文件中

  

[new Date(2008,1,6),33322,undefined,undefined,39463,undefined,   未定义]

如果我没有错,那就需要我使用AJAX来做,但我无法让它工作。我可以要求对3个步骤进行编码吗?

非常感谢任何形式的帮助。

我使用的Google图表API代码显示在下面以供参考。

<html>
  <head>
    <script type='text/javascript' src='http://www.google.com/jsapi'></script>
    <script type='text/javascript'>
      google.load('visualization', '1', {'packages':['annotatedtimeline']});
      google.setOnLoadCallback(drawChart);
      function drawChart() {
        var data = new google.visualization.DataTable();
        data.addColumn('date', 'Date');
        data.addColumn('number', 'Sold Pencils');
        data.addColumn('string', 'title1');
        data.addColumn('string', 'text1');
        data.addColumn('number', 'Sold Pens');
        data.addColumn('string', 'title2');
        data.addColumn('string', 'text2');
        data.addRows([
          [new Date(2008, 1 ,1), 30000, undefined, undefined, 40645, undefined, undefined],
          [new Date(2008, 1 ,2), 14045, undefined, undefined, 20374, undefined, undefined],
          [new Date(2008, 1 ,3), 55022, undefined, undefined, 50766, undefined, undefined],
          [new Date(2008, 1 ,4), 75284, undefined, undefined, 14334, 'Out of Stock','Ran out of stock on pens at 4pm'],
          [new Date(2008, 1 ,5), 41476, 'Bought Pens','Bought 200k pens', 66467, undefined, undefined],
          [new Date(2008, 1 ,6), 33322, undefined, undefined, 39463, undefined, undefined]
        ]);

        var chart = new google.visualization.AnnotatedTimeLine(document.getElementById('chart_div'));
        chart.draw(data, {displayAnnotations: true});
      }
    </script>
  </head>

  <body>
    // Note how you must specify the size of the container element explicitly!
    <div id='chart_div' style='width: 700px; height: 240px;'></div>

  </body>
</html>

1 个答案:

答案 0 :(得分:0)

你是对的,你需要使用ajax更新页面而不刷新 - 你可能想使用jquery或prototype.js这样的库来使ajax处理更容易一些。您需要设置一个定时事件,该事件以某个定义的频率触发(使用库也很容易)然后您创建一个PHP脚本,为您提供所需的数据。根据数据集的更新频率以及定时事件触发的频率,您可能会遇到两个问题: 你呼唤数据,但是没有新的数据,可能你不想让同一行两次,或者 你呼唤数据,有两个(或更多)新行,我猜你想要所有这些。

请记住,即使ajax中的X最初意味着xml,通常更容易使用另一种格式进行传输,json甚至是纯文本。

希望这能为您提供一些指导。 (从后端服务器开始通常是有意义的(至少,我经常这样做......),如果你用get-parameters调用它,你可以在浏览器中轻松测试它,看看你得到了你的预期)