请教关于基于Web的工业实时监控系统问题
本人要做一个生产线监控系统(B/S),有一个问题急需解决,就是如何在监控数据更新时实时通知Web服务器,再由Web服务器通知客户端(这个暂有客户端轮询、comet等方法)。
数据采集端 ---> Web服务器 ---> Web客户端
这个问题暂有一个解决方法,就是把所有实时数据都存入数据库。当客户端每次轮询时,Web服务器就访问数据库并返回最新的数据。
但这个方法有一些问题:
1、由于每条监控数据间隔很短,大约几百毫秒甚至几十毫秒,这样会频繁访问数据库,会对数据库造成很大的负担。
2、还有很多数据存入数据库并没有多大意义。
查阅相关资料,有提到一些方法:
1、其中有一篇文章提到“当实际管道的实际流量改变时,来自传感器的实时数据通过数据库设置的触发器定时更新Web的监控界面”。关于用触发器更新的方法,小弟对web编程不太熟悉,不知道如何使用?
2、还有人是使用Web服务器和数据采集程序共享window内存的。小弟以为只有客户端请求页面时,服务器才会将页面文件调入内存解释执行并返回,其他时候就是个静态文件?或者是自己编写CGI(这个更不清楚了,呵呵)。
请高人指点以上问题!小弟感激不尽!
[解决办法]
方案一:
客户端采用 comet 长连接, 后台服务器CGI程序阻塞在 UDP 广播端口.
采集程序发送广播数据, 各CGI程序转发数据到浏览器.
方案二:
采用 ActiveX 插件, Activex 与后台服务器通过 socket 连接并阻塞在UDP广播端口.
采集程序发送广播数据, 各后台程序转发数据到浏览器,ActiveX 把数据通过事件传给 JS 处理显示.
目前方案二正在某游戏运营服务器上运行, 以实现与用户的实时交互.