欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

html - 我的网站是用PHP+MySQL+Javascript做的,用来对动态数据进行实时显示,现在想在主界面做一个报警灯,求大神指点!

程序员文章站 2024-01-27 18:01:16
...

html - 我的网站是用PHP+MySQL+Javascript做的,用来对动态数据进行实时显示,现在想在主界面做一个报警灯,求大神指点!

回复内容:

html - 我的网站是用PHP+MySQL+Javascript做的,用来对动态数据进行实时显示,现在想在主界面做一个报警灯,求大神指点!

目前是两种成熟的解决方案, Ajax 轮询和 Web Socket,当然推荐后者。

至于楼上说你的Web是由PHP服务端脚本开发,很遗憾Web Socket并不能与PHP建立通信,以我的经验来看,这是错的。

我个人实践过了(线上项目和命令行的 Web Socket都是可以实现的,就是 PHP 写的), Web Socket 在 PHP 中应用完全没有问题,这基本是跟语言无关的。PHP 中的 walkerman 和 swoole 你可以看看。

或者你选择这个:http://socket.io/ 结合 redis 就可以实现。

前端不刷新页面获得事实数据目前只有两种技术,Ajax与Web Socket。这需要对比这两种技术的区别,Ajax是完全的基于Web的数据获取技术,也就是说它能获得的数据实际上是一个Web的服务端脚本能够利用url反馈的结果,很明显很符合你当前的使用,准确的说是设计比较简单。但是Ajax技术有很大的弊端是它只能被动式获取信息,什么是被动式获取信息?和你的应用场景结合一下,温度在变化,什么时候变化?何时更新数据?很显然,前端的js脚本是不能预测的,它唯一能做的是设定一个计时器,间隔n(毫)秒获取一次数据。当次与上次数据发生改变时,即可更新图表。这样的被动式就会出现一个问题,获取间隔时间太长,难以体现“实时”数据,间隔时间太短,加载了大量无用信息(即当次与前次数据相同),因此增大了服务器的处理负担。那么,有什么更好的解决办法?当然是有的,基于前端开发的Web Socket解决了这一问题。它与服务器建立一条通信线路,无论是哪方都可以主动发出消息,接收方可以实时的回馈结果。那么为什么说这项技术不能使用在你当前的应用上?首先,你的Web是由PHP服务端脚本开发,很遗憾Web Socket并不能与PHP建立通信。你所需要的是基于服务端开发一个能够具有主动请求的服务端脚本例如Java Socket Server。具体如何搭建,本文就不会过多叙述。

不是大神,建议可以通过AJAX的方式异步获取,前段的话,显示的方式就看你自己的需要设计了。

定时ajax读一下,比如每隔一分钟或者十秒钟