zoukankan
html css js c++ java
关于用户在线
//
需求如题(估计平均在线人数几百,最大在线人数3000),
//
初步想法如下,欢迎提提意见:
public
class
UserOnLine
{
public
static
void
pageLoad(System.Web.UI.Page page)
{
int
minutes
=
5
;
//
定义5分钟页面不回传用户下线
DataTable dt
=
null
;
if
(page.Application[
"
UserOnLine
"
]
!=
null
)
{
dt
=
(DataTable)page.Application[
"
UserOnLine
"
];
}
else
{
dt
=
new
DataTable();
dt.Columns.Add(
"
UserName
"
);
dt.Columns.Add(
"
FirstLoadTime
"
);
dt.Columns.Add(
"
LastLoadTime
"
);
}
//
将当前用户添加到在线用户列表
string
userName
=
page.Session[
"
username
"
].ToString();
DataRow[] rows
=
dt.Select(
"
UserName='
"
+
userName
+
"
'
"
);
if
(rows.Length
>
0
)
rows[
0
][
2
]
=
System.DateTime.Now.ToString();
else
dt.Rows.Add(
new
object
[]
{userName,System.DateTime.Now.ToString(),System.DateTime.Now.ToString()}
);
dt.AcceptChanges();
//
筛选长时间没有PostBack的用户,认为已经下线
DataRow[] downRows
=
dt.Select(
"
Convert(LastLoadTime,'System.DateTime')<Convert('
"
+
System.DateTime.Now.AddMinutes(
-
minutes).ToString()
+
"
','System.DateTime')
"
);
for
(
int
i
=
0
;i
<
downRows.Length;i
++
)
{
//
将downRows[i]的记录保存到数据库
downRows[i].Delete();
}
dt.AcceptChanges();
page.Application[
"
UserOnLine
"
]
=
dt;
}
}
//
在每个页面的Page_Load的时候调用此方法;
//
由于我的项目所有的页面都是继承子一个basePage类,该类继承System.Web.UI.Page,所以实际上并不需要改动任何一个页面,而只需要改一下basePage类就可以了。
查看全文
相关阅读:
linux下查看当前登陆的用户数目
uboot能ping通本机无法ping通本机上搭建的虚拟机
一个时序图描述从用户在浏览器地址栏输入url并按回车,到浏览器显示相关内容的各个过程
3*0.1 == 0.3 将会返回什么?true 还是 false?
Floating Point Math
浮点数在计算机中是如何表示的
浮点数在计算机中是如何表示的
Java并发编程:volatile关键字解析
join的源码
i++ 是线程安全的吗
原文地址:https://www.cnblogs.com/acelove/p/86228.html
最新文章
笔记本分享无线Wifi
桌面虚拟化“寻人行动”-转裁
研发工程师如何转型项目经理
tomcat日志切割和定期删除
做好架构师,要懂微服务,汇总微服务架构落地的15种框架
支付宝的下个千亿生意!揭秘阿里智能公交布局
微服务架构
Netty优雅退出机制和原理
Java线程池队列吃的太饱,撑着了咋整?java 队列过大导致内存溢出
Linux 虚拟内存和物理内存的理解
热门文章
Linux 物理内存 buffer cache
Top 命令解析
shell脚本中多个条件判断的语法
git将多个commit合并成一个新的commit
git commit时加上Signed-off-by信息
rm删除某个文件之外的文件
git am PATCH_FILE_NAME自动打patch失败后的操作方法
vim删除某一列
使用awk分割字符串并且获取分割后的最后一个字符串
#/bin/sh参数-e的含义
Copyright © 2011-2022 走看看