一个统计当前在线用户的解决方案在做一个在线交流的网站时,有个问题很令我头疼,就是关于实时统计在线用户的问题,客户要求:统计当前在线人数、游客人数、会员人数、在线用户列表,包括游客、会员和管理员(如果是游客,则自动生成游客的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 if session("s_name")<>"" then '如果用户已经通过登录框登录 ... ... %> ... ... <head> ... ... <script language=javascript> ... ... </head> ... ... ========================================================== onceonline.asp <% rs.open "delete from online where datediff('s',tt,now())>60",conn,3,1 '删除超时用户 ============================================================== 这样,基本保证了数据库中用户列表的实时性,误差取决于更新时间和删除时间的差值大小和服务器的处理速度,建议不要将删除超时用户的时间间隔取的过于小,那样有可能会导致在线用户0人的失误。 本方案在WIN2000+SQL Server2000上调试通过,由于本方案对系统要求比较大,期待其他朋友拿出更好的方案,一起解决这个问题! 我的信箱:my5243@hotmail.com 我叫“积木”,欢迎你和我成为朋友! 上一篇:用asp解析图片地址,并将其保存。 下一篇:用Asp备份与恢复SQL Server 数据库 更多相关文章
|
推荐文章
精彩文章
|