Php 如何从文本文件更新实时图形?
我打算从一个文本文件在.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代码,以供参考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日)
<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参数调用它,您可以在浏览器中轻松测试它,以查看您是否得到了预期的结果)