Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何从文本文件更新实时图形?_Php_Html_Ajax_Solaris - Fatal编程技术网

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

Php 如何从文本文件更新实时图形?,php,html,ajax,solaris,Php,Html,Ajax,Solaris,我打算从一个文本文件在.php/html上显示一个实时图形,而不刷新页面。目前,我在下面的过程中遇到了一个问题 源文件:。包含数据的txt文件,源自solaris服务器 1) 定期从solaris服务器向服务器请求数据。(假设目标文件夹指定为/home/sadm/htdocs/00000001/updateShop) 2) 从文本文件(inventory.txt)检索数据 3) 解析数据以添加新行 例如,从文本文件中的(2008-1-6:33322:39463)到 [新日期(2008年1月6日)

我打算从一个文本文件在.php/html上显示一个实时图形,而不刷新页面。目前,我在下面的过程中遇到了一个问题

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

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

2) 从文本文件(inventory.txt)检索数据

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

[新日期(2008年1月6日),33322,未定义,未定义,39463,未定义, 未定义]

如果我没有错的话,这将需要我使用AJAX来完成,但我无法让它工作。我可以要求对三步流程进行编码吗

非常感谢任何形式的帮助

下面显示了我使用的GoogleGraphAPI代码,以供参考

<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>

load('visualization','1',{'packages':['annotatedtimeline']});
setOnLoadCallback(drawChart);
函数绘图图(){
var data=new google.visualization.DataTable();
data.addColumn('date','date');
data.addColumn('number','salled Pencils');
data.addColumn('string','title1');
data.addColumn('string','text1');
data.addColumn('number','salled Pens');
data.addColumn('string','title2');
data.addColumn('string','text2');
data.addRows([
[新日期(2008年1月1日),30000,未定义,未定义,40645,未定义,未定义],
[新日期(2008年1月2日),14045,未定义,未定义,20374,未定义,未定义],
[新日期(2008年1月3日),55022,未定义,未定义,50766,未定义,未定义],
[新日期(2008年1月4日),75284,未定义,未定义,14334,'缺货','下午4点钢笔缺货',
[新日期(2008年1月5日),41476,“购买的钢笔”,“购买的20万支钢笔”,66467,未定义,未定义],
[新日期(2008年1月6日),33322,未定义,未定义,39463,未定义,未定义]
]);
var chart=new google.visualization.AnnotatedTimeLine(document.getElementById('chart_div'));
draw(数据,{displayAnnotations:true});
}
//请注意,必须明确指定容器元素的大小!

您是对的,您需要使用ajax来更新页面,而无需刷新-您可能希望使用jquery或prototype.js之类的库来简化ajax处理。您需要设置一个定时事件,以某个定义的频率触发(使用库也很容易),然后生成一个php脚本,返回所需的数据。根据数据集的更新频率和定时事件触发的频率,您可能会遇到两个问题: 您调用数据,但没有新数据,可能您不想让同一行重复两次,或者 如果您调用数据,并且有两行(或更多)新行,我猜您需要所有行

请记住,尽管ajax中的X最初表示xml,但通常更容易使用另一种格式进行传输,即json,甚至纯文本

希望这能为您提供一些前进的方向。(从后端服务器开始通常是有意义的(至少,我经常这样做…),如果您使用get参数调用它,您可以在浏览器中轻松测试它,以查看您是否得到了预期的结果)