Highcharts, PHP制作实时更新的动态线性图
来源:互联网 发布:基坑监测数据处理软件 编辑:程序博客网 时间:2024/06/11 14:04
最近单位做了一个简单的数据采集程序,用PLC采集数据并用KepServer采集到数据库中,大概每10秒钟采集一次,我用PHP做了一个页面提供查询,能够将指定时间段的数据查询出来,并转存到Excel中查看分析。我觉得有些麻烦,就想用Highcharts直接动态的显示到页面中,每10秒钟自动更新一次。经过几天的努力,终于实现了基本的功能,现在总结一下,以便以后参考。
首先我用的环境是MS SQL + PHP + Highcharts(一个javascript图形库,如果不知道,网上自行查。)中间用Json传递数据。数据库中只有一个表(rz),有两列分别是时间和数值(rzTime,rzValue)。
后台PHP程序一个文件用来输出Json文件:
<?php /* 用 PDO_SQLSRV 链接 SQL server . */ $serverName = "YourServerName"; $database = "DatabaseName"; //从文件中读取用户名和密码. $uid = file_get_contents("..\uid.txt"); $pwd = file_get_contents("..\pwd.txt"); try{ $conn = new PDO( "sqlsrv:server=$serverName;Database = $database",$uid,$pwd); $conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION ); } catch(PDOException $e){ die("Error connection to SQL Server"); }
//每次只需要读出一个最新的数据 $query = "select top 1 rzTime,rzValue from rz order by rzTime DESC"; $stmt = $conn->query($query); $row = $stmt->fetch(); $rzTime = strtotime($row['rzTime']); $rzH = strftime('%H',$rzTime); $rzM = strftime('%M',$rzTime); $rzS = strftime('%S',$rzTime); $rzmonth = strftime('%m',$rzTime); $rzD = strftime('%d',$rzTime); $rzY = strftime('%Y',$rzTime); //将时间转换为时间戳 $jsonArray = array(mktime($rzH,$rzM,$rzS,$rzmonth,$rzD,$rzY)*10000,round($row['rzValue'],3)); $stmt->closeCursor(); $stmt = null; $conn = null; //文件输出为设置为 JSON header('Content-type: text/json'); echo json_encode($jsonArray);?>
单独访问这个文件,会返回一个jsong数据:
[1.4806018e+12,1743.056]
前台程序,首先需要引入jQuery和Highcharts库文件:
<script type="text/javascript" src="../Charts/js/jquery-1.7.2.min.js"></script> <script src="../Charts/js/highcharts.js"></script> <script src="../Charts/js/modules/exporting.js"></script>
用jQuery调用数据文件,每10秒调用一次。
function requestData(){ $.ajax({ url: 'chartData.php', success: function(point){ var series = chart.series[0], shift = series.data.length > 20; // 图中显示20个数据点 chart.series[0].addPoint(eval(point),true,shift); setTimeout(requestData,10000); //每10秒调用一次 }, cache: false }); }
设置Highcharts属性:
$(document).ready(function(){ chart = new Highcharts.Chart({ chart: { renderTo: 'container', defaultSeriesType: 'spline', events: { load: requestData } }, title:{ text: '实时数据', x:-20 }, xAxis: { type: 'datetime', tickPixelInterval: 150, maxZoom: 20 * 1000 }, yAxis: { minPadding: 0.2, maxPadding: 0.2, title: { text: '数值', margin: 80 } }, tooltip: { formatter: function(){ return Highcharts.dateFormat('%Y-%m-%d %H:%M:%S', this.x) + '数值是:' + this.y; } }, //本来下面是版权信息,我将它改成下载浏览器了,因为这个在XP下IE7,8无法运行 credits:{ enabled:true, text:'XP系统请点击这里下载浏览器', href:'../../谷歌浏览器 XP版.exe', style:{ color:'#FF0000', fontSize:'14px' } }, series: [{ name: 'XXX值', data: [] }] }); });
在服务器中运行就会出现和数据库同步更新的线性图了。祝好运!
0 0
- Highcharts, PHP制作实时更新的动态线性图
- highcharts实现实时动态的折线面积图
- 基于highcharts的图表实时更新
- highcharts jquery实时更新
- java实现的highcharts与ajax结合动态实时获取数据更新图表
- java实现的highcharts与ajax结合动态实时获取数据更新图表
- 利用highcharts实现实时动态折线图
- 动态更新highcharts数据
- 使用highcharts完成实时信息显示的动态波动图表
- 【ZedGraph】控件的使用2_动态实时更新图
- highcharts 实时动态多条曲线
- php 实时更新图片的加载
- echarts jsp实时更新动态折线图
- php实现动态折线图,highcharts折线图
- HighCharts 随机数动态曲线展示(动态数据实时展示)
- 使用ZedGraph制作动态更新的统计图
- 使用ZedGraph制作动态更新的统计图
- 使用ZedGraph制作动态更新的统计图
- 非比较排序---计数排序&基数排序
- spring cloud微服务框架 第一天
- SVProgressHUD会crash的处理方法
- 横向recyclerView程序自动切换并高亮选中item
- openwrt 安装 Mosquitto
- Highcharts, PHP制作实时更新的动态线性图
- java使用redis时,中文乱码问题
- Spring整合JMS(消息中间件)实例
- java SSM框架批量上传实现
- 算法总结(二)图
- iOS实现热修复的几种方案
- Android读取桌面安装的应用
- Linux文件描述符(特别概念三)
- Universal-Image-Loader类库使用