2007-06-20
setInterval定时调用ajax实现在线人数统计-你得到了正确的数据那才是你会了,-
关键字: 用ajax实现在线人数统计有关在线人数的统计的这个问题在很多的网站论坛还有系统都有过,我曾经也作过用HttpSessionListener来做,但是做好了以后我总是觉得不对劲老觉得数据不准确,当然在线人数这个问题不能做的非常准确因为很多因素了。现在的这个项目又要做这个东西,这次需要的数据希望尽量精确一点,我又把HttpSessionListener拿出来,这下可好了,不知道这个系统怎么了,数据一直为0,也就是说HttpSessionListener不起任何作用,于是乎跟pm讨论一下该怎么去做,我提出的方法两个,HttpSessionListener与在用户表添加字段直接从数据库统计,前者我是无能为力了找不到原因(这个项目很是奇怪,console已经报session过期,但是业务逻辑仍然可以正确执行,项目对session也作过处理,估计我的那个HttpSessionListener不起作用与这个项目的session的处理有关,也想到用httpSessionListenerBinder来做,再想想色session有问题就算了),第二个方法pm说我想的太复杂,(我想揍他,我现在都懒得跟他说话,见到他那张臭脸我就难受,我估计他也不想跟我说话,我每次跟他叫板他很不爽我也看出来了,我现在非常佩服我的那句话,你先听我说,因为是我在做!哈哈)那我就把这个问题交给他,他什么时候从网上找到了好的解决方法告诉我我再做好了,我都想不通是我做又不是他做他嫌麻烦!最后他也没找到简单的解决方法,最后甩一句屁话,无论你怎么做只要实现功能就行,这种人还当pm,我没话说了。
最后还是采用的加字段的方法,index页面把onLineCount.jsp给include进来,onLineCount.jsp每隔一段时间刷新一次从数据库中统计数据,很显然这个方法非常的错误,onLineCount.jsp每次刷新的同时index整个页面也要刷新,首页数据量大的情况下肯定不行。而且还出现了一个我更郁闷的问题 :用户a登录后页面显示a的相关信息,用户b 登录后应该显示b的相关信息,如果把刷新的间隔时间设的短假如10秒钟,那么在服务器反映慢的情况下,如果a 已经登录并显示a的内容,但是刚好在b登录的时候,a页面正好刷新,等b登陆成功后b的页面显示b的信息,但这个时候a的页面也显示了b的信息,如果我把这个间隔的时间设长,加入1分钟,即使服务器再慢1分钟应该反映的过来吧,这样就没有出现乱套的问题,如果间隔时间为10秒,服务器反映够快,也不会出现乱套的情况。
于是还得想办法,ajax以前经常听说,在它很火的时候我也常常看几眼,实际中也没用过那么就用这个试一下,结果发现还真的像传说中的那么好用







评论排行榜