会员
周边
众包
新闻
博问
闪存
所有博客
当前博客
我的博客
我的园子
账号设置
简洁模式
...
退出登录
注册
登录
菜鸟学飞记录集
菜鸟想飞就得慢慢学,脚踏实地一步一步来。 从菜鸟变老鸟,让我们一起进步。
博客园
首页
联系
管理
关于用户在线
//
需求如题(估计平均在线人数几百,最大在线人数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类就可以了。
posted on
2005-01-04 15:07
小菜鸟软件学习
阅读(
466
) 评论(
0
)
编辑
收藏
举报
会员力量,点亮园子希望
刷新页面
返回顶部