记录用户在线时间
2012-02-03 10:23
204 查看
前言
同事在弄一个叫学习空间的系统,其中需要记录用户的在线时间,于是我就帮忙实现一下,那个系统的其他部分都没参与过。不过功能实现得还可以,就小结一下也看看能不能有更好的解决方法。
正文
思路:在页面加载和卸载时的把当前时刻发送到服务器,服务器端用链表保存并且该链表保存在Session中,但Session过期时检索该链表获取最小和最大值并相减,那就得到了用户在线时间了。
前提:Session mode要设为 InProc,不然永不过期哦!
下面是具体实现例子:
目录结构
RecordTime用于记录加载、卸载、登录、退出的时刻;
Logout处理注销操作;
Global.asax中的Session_End方法用于处理链表并获取、保存最终在线时间结果。
AjaxHasPool是自己封装的Ajax调用对象,图个方便而已!
源代码下载
源代码使用说明:在Global.asax的Session_End方法中设断点,使用调试模式启动就可以看到结果值。
插曲:本来打算在Session_End中使用HttpContext.Current.Application来保存结果值,然后再获取并显示到页面上。不料原来在Session_End中是获取不料HttpContext.Current。具体原因是:Session_End事件是由服务器内部激发的事件处理函数,由服务器的内部计时器启动,这时服务器没有接收到相关的请求就没有进入管道模型中生成HttpContext对象,所以无法获取HttpContext.Current对象,就更别说什么Application、Request对象了。而Session_End事件的发生时间是1.Session过期;2.调用Session.Abandon()后,该次请求/响应处理结束时,所以执行Session.Abandon()后,客户端必须至少有一次请求,才能正确反应Session的状态。
参考:http://www.cnblogs.com/cnxcfeng/articles/1189171.html
注意:因Session是保存在Asp.net进程的AppDomain中,当进程结束或崩溃时会触发Session_End事件。
同事在弄一个叫学习空间的系统,其中需要记录用户的在线时间,于是我就帮忙实现一下,那个系统的其他部分都没参与过。不过功能实现得还可以,就小结一下也看看能不能有更好的解决方法。
正文
思路:在页面加载和卸载时的把当前时刻发送到服务器,服务器端用链表保存并且该链表保存在Session中,但Session过期时检索该链表获取最小和最大值并相减,那就得到了用户在线时间了。
前提:Session mode要设为 InProc,不然永不过期哦!
下面是具体实现例子:
目录结构
RecordTime用于记录加载、卸载、登录、退出的时刻;
Logout处理注销操作;
Global.asax中的Session_End方法用于处理链表并获取、保存最终在线时间结果。
AjaxHasPool是自己封装的Ajax调用对象,图个方便而已!
源代码下载
源代码使用说明:在Global.asax的Session_End方法中设断点,使用调试模式启动就可以看到结果值。
插曲:本来打算在Session_End中使用HttpContext.Current.Application来保存结果值,然后再获取并显示到页面上。不料原来在Session_End中是获取不料HttpContext.Current。具体原因是:Session_End事件是由服务器内部激发的事件处理函数,由服务器的内部计时器启动,这时服务器没有接收到相关的请求就没有进入管道模型中生成HttpContext对象,所以无法获取HttpContext.Current对象,就更别说什么Application、Request对象了。而Session_End事件的发生时间是1.Session过期;2.调用Session.Abandon()后,该次请求/响应处理结束时,所以执行Session.Abandon()后,客户端必须至少有一次请求,才能正确反应Session的状态。
参考:http://www.cnblogs.com/cnxcfeng/articles/1189171.html
注意:因Session是保存在Asp.net进程的AppDomain中,当进程结束或崩溃时会触发Session_End事件。
相关文章推荐
- 记录用户总在线时间的HACK
- Asp.net MVC4 记录在线用户数及登录时长
- Linux下查看用户登陆后的操作记录及history命令显示时间
- SMOD增强:记录登入用户时间
- 怎样实现精度小于秒的延时或记录用户回应的时间?
- 在用户登录日志中查询某个时间里面在线用户数量
- php实现用户在线时间统计详解
- asp检测 记录在线时长 在线时间
- java 使用cookie记录用户上一次访问的时间 记住 用户的 登录名
- Linux下查看用户登陆后的操作记录及history命令显示时间
- SQLSERVER记录登录用户的登录时间
- js记录用户在网站的浏览记录和停留时间(2)
- 记录用户在网站上的逗留时间
- linux history 记录 时间 ip 登录用户
- 实现“记录用户登录时间和退出时间,同时记录用户IP,并且要记录用户IP对应的省和城市地址”
- 在论坛中出现的比较难的sql问题:45(用户在线登陆时间的小时、分钟计算问题)
- linux(centos 6)下记录所有用户的操作以及ip、时间
- 看看全球用户在线时间最多的20个网站是什么
- Linux下查看用户登陆后的操作记录及history命令显示时间
- 统计用户在线时间的一种尝试