一个统计当前在线用户的解决方案

解决|统计|在线

在做一个在线交流的网站时,有个问题很令我头疼,就是关于实时统计在线用户的问题,客户要求:统计当前在线人数、游客人数、会员人数、在线用户列表,包括游客、会员和管理员(如果是游客,则自动生成游客的ID,如果是会员,则显示会员姓名)。因为它要求有实时性,则首先我将用global.asa解决的想法pass掉。

问题的关键是如何判断用户已经离开,和当用户离开时如何执行一个文件或一个函数。

经过和网上一些朋友的探讨,终于解决了这个问题。

解决的原理为:编写一个通用页面,所谓的通用页面,就是应用里的每个页面都包含这个页面,例如:header.asp,在这个页面里,用XMLHTTP写一段代码,这段代码的作用是每隔10秒或20秒就向服务器发送一个请求,目的是更新当前用户的在线时间并删除在线时间超过一定时间的用户,使数据库中的在线用户记录保持一定的实时性。

主要实现方法为:

新建一数据库,字段名称分别为:id(字符),name(字符),user(数字)tt(日期),admin(权限代码,0-普通用户,1-管理员)

表名:online

header.asp ↓

============================================================

<%

... ...

if session("s_in")<>1 and session("s_name")="" then '如果用户是第一次登陆

rs.open "select * from online",conn,3,3
rs.addnew
rs("id")=session.sessionID
rs("name")="游客" & session.sessionID
rs("user")=0 '0表示用户未登陆,是游客身份
rs("tt")=now
rs.update
rs.close
session("s_in")=1 '设置用户的资料已经存入数据库,表示已经在线
end if

if session("s_name")<>"" then '如果用户已经通过登录框登录
rs.open "select * from online where id='" & session.sessionID & "'",conn,3,3
rs("name")=session("s_name")
rs("admin")=session("s_admin") '将用户的姓名更新为会员名称
rs("user")=1 '表示用户已经登陆,是会员身份
rs("tt")=now '将当前系统时间设置为用户的登陆时间
rs.update
rs.close
end if

... ...

%>

... ...

<head>

... ...

<script language=javascript>
function Test()
{
var xmlhttp = new ActiveXObject("MSXML2.XMLHTTP");
xmlhttp.open("POST","onceonline.asp",false); // 向onceonline.asp发送更新请求
xmlhttp.setRequestHeader("CONTENT-TYPE","application/x-www-form-urlencoded");
xmlhttp.send();
}
setInterval("Test();",10); // 10秒钟发送一次更新请求
</script>

... ...

</head>

... ...

==========================================================

onceonline.asp

<%
rs.open "select tt from online where id='" & session.sessionID & "'",conn,3,3
rs("tt")=now() '更新当前在线用户的在线时间
rs.update
rs.close

rs.open "delete from online where datediff('s',tt,now())>60",conn,3,1 '删除超时用户
%>

==============================================================

这样,基本保证了数据库中用户列表的实时性,误差取决于更新时间和删除时间的差值大小和服务器的处理速度,建议不要将删除超时用户的时间间隔取的过于小,那样有可能会导致在线用户0人的失误。

本方案在WIN2000+SQL Server2000上调试通过,由于本方案对系统要求比较大,期待其他朋友拿出更好的方案,一起解决这个问题!

我的信箱:my5243@hotmail.com

我叫“积木”,欢迎你和我成为朋友!

时间: 2024-11-02 02:18:57

一个统计当前在线用户的解决方案的相关文章

asp实现一个统计当前在线用户的解决方案_应用技巧

一个统计当前在线用户的解决方案 在做一个在线交流的网站时,有个问题很令我头疼,就是关于实时统计在线用户的问题,客户要求:统计当前在线人数.游客人数.会员人数.在线用户列表,包括游客.会员和管理员(如果是游客,则自动生成游客的ID,如果是会员,则显示会员姓名).因为它要求有实时性,则首先我将用global.asa解决的想法pass掉. 问题的关键是如何判断用户已经离开,和当用户离开时如何执行一个文件或一个函数. 经过和网上一些朋友的探讨,终于解决了这个问题. 解决的原理为:编写一个通用页面,所谓的

asp实现一个统计当前在线用户的解决方案

一个统计当前在线用户的解决方案 在做一个在线交流的网站时,有个问题很令我头疼,就是关于实时统计在线用户的问题,客户要求:统计当前在线人数.游客人数.会员人数.在线用户列表,包括游客.会员和管理员(如果是游客,则自动生成游客的ID,如果是会员,则显示会员姓名).因为它要求有实时性,则首先我将用global.asa解决的想法pass掉. 问题的关键是如何判断用户已经离开,和当用户离开时如何执行一个文件或一个函数. 经过和网上一些朋友的探讨,终于解决了这个问题. 解决的原理为:编写一个通用页面,所谓的

一个统计当前在线用户的解决方案,可以在聊天室、论坛、网站中使用

解决|聊天室|统计|在线 在做一个在线交流的网站时,有个问题很令我头疼,就是关于实时统计在线用户的问题,客户要求:统计当前在线人数.游客人数.会员人数.在线用户列表,包括游客.会员和管理员(如果是游客,则自动生成游客的ID,如果是会员,则显示会员姓名).因为它要求有实时性,则首先我将用global.asa解决的想法pass掉. 问题的关键是如何判断用户已经离开,和当用户离开时如何执行一个文件或一个函数. 经过和网上一些朋友的探讨,终于解决了这个问题. 解决的原理为:编写一个通用页面,所谓的通用页

ASP.NET中在线用户统计的简单实现及讨论

asp.net|统计|在线     统计在线用户的作用不言而喻,就是为了网站管理者可以知道当前用户的多少,然后根据用户数量来观察服务器或者程序的性能,从而可以直观的了解到网站的吸引力或者网站程序的效率.现在,我们就介绍一个简单明了的方法来统计在线用户的多少,该方法的特点就是充分的利用了ASP.NET的特点,结合global.asax文件,用Application和Session巧妙的实现在线用户的统计,由于程序中只用到一个Application,所以,程序占用系统资源几乎可以忽略不及,当然,这也

ASP.NET中在线用户统计

asp.net|统计|在线 统计在线用户的作用不言而喻,就是为了网站管理者可以知道当前用户的多少,然后根据用户数量来观察服务器或者程序的性能,从而可以直观的了解到网站的吸引力或者网站程序的效率.现在,我们就介绍一个简单明了的方法来统计在线用户的多少,该方法的特点就是充分的利用了ASP.NET的特点,结合global.asax文件,用Application和Session巧妙的实现在线用户的统计,由于程序中只用到一个Application,所以,程序占用系统资源几乎可以忽略不及,当然,这也是网站管

基于IBM市场营销智能分析软件的在线用户行为分析解决方案

所谓知己知彼才能百战百胜,了解用户行为,捕捉客户声音至关重要.本文以 IBM 市场营销智能分析软件 Coremetrics 和电子商务软件 WebSphere Commerce 集成为例,介绍在线用户行为分析解决方案.通过 Coremetrics 直观灵活的报告,优化市场营销渠道.将行为洞察力转化为自动化的市场营销行动,通过锁定在各个渠道中具有相关内容的潜在客户来增加销售额. 随着电子商务的井喷式发展,网购已经成为家常便饭.与传统的实体店购物不同,我们无法与客户面对面了解他们对产品的反馈以及需求

使用 Redis 统计在线用户人数的例子

在构建应用的时候, 我们经常需要对用户的一举一动进行记录, 而其中一个比较重要的操作, 就是对在线的用户进行记录. 本文将介绍四种使用 Redis 对在线用户进行记录的方案, 这些方案虽然都可以对在线用户的数量进行统计, 但每个方案都有一些自己特有的操作, 并且各个方案的性能特征以及资源消耗也各有不同. ../../_images/online_users.png 方案 1 :使用有序集合 每当一个用户上线时, 我们就执行 ZADD 命令, 将这个用户以及它的在线时间添加到指定的有序集合中: Z

asp 简单在线用户统计代码

asp教程 简单在线用户统计代码 这代码是用了asp apliction 与session实例的哦. <script language="vbscript" runat="server"> sub Application_onStart application.Lock() application("use_online")=0 application.UnLock() end sub sub application_onend ap

赶紧接着上一节:Silverlight+WCF 新手实例 象棋 主界面-实时聊天区(二十五) 这节我们实现上节没实现的纠结的进出房间的消息提示 我们清楚的知道,我们每个区都是一个用户控件,我们的在线用户进出时,得到聊天区域显示信息,这就涉及到用户控件之间的消息传递了。 在线用户区说:反正我是

赶紧接着上一节:Silverlight+WCF 新手实例 象棋 主界面-实时聊天区(二十五)  这节我们实现上节没实现的纠结的进出房间的消息提示 我们清楚的知道,我们每个区都是一个用户控件,我们的在线用户进出时,得到聊天区域显示信息,这就涉及到用户控件之间的消息传递了. 在线用户区说:反正我是没权直接去实时聊天区写东西,没办法,找中介委托设置一下了. 那谁是中介呢?委托谁呢?当然是衣食父母Index.xaml了,是它撑着整个家庭的. 好了,知道中介了,那我就签个委托书了: 回到OnlineUse