Web系统实时监控后台是否有新消息的解决办法
2010-06-04 10:12
501 查看
我的想法是写一个循环的Ajax不断的查数据库,但是这样显然做做试验还是可以的,但是用到真正的项目中就不可能了。如果用户数量众多,大量同时查询数据库必然导致效率低下。一下是一个网友的解决办法,我觉得很有收获,在此分享。
目前的服务器性能都应该不成问题,而性能瓶颈往往出现在对数据库的查询上,查询语句复杂、语句条数多,这些都是造成大用户量访问时,服务器总体性能下降的原因。
针对楼主的问题,说的深奥一点就是可以用ajax来解决,说的简单一点就是一小段定时循环的javascript。
用这个js每分钟(自定义)从服务器请求该用户是否有新消息,有的话就接收消息。然后用js在页面某个地方显示一个会闪的gif,自动提示消息的功能就ok了。
主要是考虑后台如何查询这些信息。信息一般都存在数据库,这个没有疑问,但不能主动去数据库查询这些信息。在数据库中应该有一张专门放置要提示的信息的表,其他信息新增模块每次产生一条新信息,除了记录到信息模块的表中,还应该顺便记录到这张临时表中。
接着要有一个定时程序,可能每分钟一次,从临时表中读取所有数据(这样很快,一次性查出所有用户的信息),然后将这些数据写入服务器application上下文。
前台有一个服务类,用来和页面的ajax请求交互。这个类接受到用户的刷新请求,开始到application上下文中的信息列表中查找用户的信息。(不可否认:在内存列表中查找信息远比在数据库中用sql查找信息)如果找到就把信息通过xml-> ajax返回给客户端。
当客户到查看信息页面中查看掉信息后,就删除临时表中的记录,一分钟后的同步动作应该自动将内存中的信息干掉了。
目前的服务器性能都应该不成问题,而性能瓶颈往往出现在对数据库的查询上,查询语句复杂、语句条数多,这些都是造成大用户量访问时,服务器总体性能下降的原因。
针对楼主的问题,说的深奥一点就是可以用ajax来解决,说的简单一点就是一小段定时循环的javascript。
用这个js每分钟(自定义)从服务器请求该用户是否有新消息,有的话就接收消息。然后用js在页面某个地方显示一个会闪的gif,自动提示消息的功能就ok了。
主要是考虑后台如何查询这些信息。信息一般都存在数据库,这个没有疑问,但不能主动去数据库查询这些信息。在数据库中应该有一张专门放置要提示的信息的表,其他信息新增模块每次产生一条新信息,除了记录到信息模块的表中,还应该顺便记录到这张临时表中。
接着要有一个定时程序,可能每分钟一次,从临时表中读取所有数据(这样很快,一次性查出所有用户的信息),然后将这些数据写入服务器application上下文。
前台有一个服务类,用来和页面的ajax请求交互。这个类接受到用户的刷新请求,开始到application上下文中的信息列表中查找用户的信息。(不可否认:在内存列表中查找信息远比在数据库中用sql查找信息)如果找到就把信息通过xml-> ajax返回给客户端。
当客户到查看信息页面中查看掉信息后,就删除临时表中的记录,一分钟后的同步动作应该自动将内存中的信息干掉了。
相关文章推荐
- 跟后台打印程序系统服务通讯时出现错误。请打开服务管理单元,确认后台打印程序服务是否在运行。解决办法
- 新装系统5ucms进后台报错-数据库链接出错,请检查数据库路径是否正确(Inc/Conn.asp)!解决办法
- C(++) Web实时消息后台服务器推送技术---GoEasy
- JAVA Web实时消息后台服务器推送技术---GoEasy
- webview loadUrl() 弹出系统浏览器解决办法
- C# Web实时消息后台服务器推送技术---GoEasy
- C++ Web实时消息后台服务器推送技术---GoEasy
- Visual Studio 2013 无法启动 IIS Express 的解决办法,新建web项目时出错,系统找不到指定文件
- android webview中的html代码 @media screen 在低版本系统下显示不正常的解决办法
- 监听Activity进入后台(最小化),并根据时间判断是否超时,此解决办法可用于超时重登陆
- 【Android】4.04系统WebView播放不了Flash问题的解决办法
- C语言 Web实时消息后台服务器推送技术---GoEasy
- 监控系统中20个常见故障和解决办法
- Active Directory Web 服务无法确定该计算机是否是全局编录服务器(解决办法)
- 单位监控系统FTP下载程序“数据库连接失败”解决办法
- 监听Activity进入后台(最小化),并根据时间判断是否超时,此解决办法可用于超时重登陆
- 移动web判断手机系统是安卓还是ios的解决办法
- node.js Web实时消息后台服务器推送技术---GoEasy
- Node.js Web实时消息后台服务器推送技术-GoEasy
- 学生信息管理系统中的实时错误’3021‘解决办法