2 hypnos0928 Hypnos0928 于 2014.11.21 09:22 提问

ASP.NET怎么样不通过session统计在线人数

我们家网站sessionmode是StateServer,不会进入Session_end方法,现在客户要求做一个统计在线人数的功能,该怎么做??

4个回答

showbo
showbo   Ds   Rxr 2014.11.21 10:10

建立一个数据库表,记录sessionid和开始时间,session_start的时候表中写入sessionid和开始时间,并且执行下删除语句(开始时间大于30分钟的记录,这个间隔自己定了),然后更新下application计数。

用户每次访问页面的时候更新sessionid对应的开始时间,防止误判断(>30分钟)

通过数据库控制,效率不是很高~

q107770540
q107770540   Ds   Rxr 2014.11.21 10:53

客户端保持AJAX心跳,指定时间内和服务器通信一次 保持在线
这样即可统计真正的在线人数

caozhy
caozhy   Ds   Rxr 2014.11.21 13:19

无论什么方法,都只能大致统计在线人数,因为http是无状态的。你可以增加一个用户最后活动时间的字段,在每次页面请求的时候刷新它,在用户注销的时候清空它。而将问题转化为,查找最后活动时间在多少分钟之内的用户数。

jinfengyiye
jinfengyiye   2014.11.21 13:37

数据库或者文件记录一下吧.

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!