• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    asp实现一个统计当前在线用户的解决方案
    一个统计当前在线用户的解决方案

    在做一个在线交流的网站时,有个问题很令我头疼,就是关于实时统计在线用户的问题,客户要求:统计当前在线人数、游客人数、会员人数、在线用户列表,包括游客、会员和管理员(如果是游客,则自动生成游客的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上调试通过,由于本方案对系统要求比较大,期待其他朋友拿出更好的方案,一起解决这个问题!
    您可能感兴趣的文章:
    • ASP制作在线人数统计实例
    • 统计有多少行JS代码和ASP代码
    • ASP程序代码执行时间统计类
    • asp论坛在线人数统计研究
    • 实现ASP程序执行时间统计类的代码
    • ASP访问数量统计代码
    • asp.net aspnetpager分页统计时与实际不符的解决办法
    • asp.net中调用Office来制作3D统计图的实例代码
    • ASP.net中网站访问量统计方法代码
    • php模仿asp Application对象在线人数统计实现方法
    • 四步完成asp网页设计流量统计
    上一篇:一些Asp技巧和实用解决方法
    下一篇:asp下的一个很简单的验证码程序第1/3页
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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