请教各位关于统计在线人数的问题,急!

seaskyblues 2005-10-26 09:18:51
现在的方法是:
当用户登陆时往数据库的表里添加在线信息,当SESSION值到时就从数据库里清除超过SESSION有效期的用户在线记录。但是这样做好像有些问题。

我现在想做成当用户关闭该网站所有页面时自动清除数据库里的在线信息,请问该如何实现?是要通过APPLICATION来实现吧?
...全文
206 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
myjmjb 2005-10-26
  • 打赏
  • 举报
回复
源代码如下:
把下面程序放在用户登录后的页面里
<script language=javascript>
function Test()
{
var xmlhttp = new ActiveXObject("MSXML2.XMLHTTP");
xmlhttp.open("POST","http://www.sq.com/OnceOnline.asp",false); // 向onceonline.asp发送更新请求
xmlhttp.setRequestHeader("CONTENT-TYPE","application/x-www-form-urlencoded");
xmlhttp.send();
}
setInterval("Test();",10); // 10秒钟发送一次更新请求
</script>

onceonline.asp主要程序如下:
<%
sq="select * from online where seid ='" & Session.SessionID & "'"
rs.open sq,conn,1,3
rs("time")=Now()
rs.update
rs.close
sq="Delete * From Online Where Datediff('s',Time,Now())>60"
rs.open sq,conn,1,3
rs.close
conn.close
set rs=nothing
set conn=nothing
%>
只要统计Online表里记录数就是在线人数了
LifeForCode 2005-10-26
  • 打赏
  • 举报
回复
在线人数常用APPLICATION实现
global.asa里写Session_OnStart和Session_OnEnd 过程,
如:用户关闭该网站所有页面时自动清除数据库里的在线信息,
这些代码就写在Session_OnEnd过程中。
注意这更改APPLICATION的值时,要先锁定APPLICATION,操作完了再解锁
myjmjb 2005-10-26
  • 打赏
  • 举报
回复
你思路有问题,应这样设计:用户登录时把用户登录信息(登录时间一定要有)记录在另一个表中(用户登录表),然后有一个检测程序每1分钟(这时间你可自己设,一般为一分钟或)检测用户登录表检测该用户,如有就表示在线并立即把用户登录时间修改为当前时间,当用户离线时一定是关闭了浏缆器,所发此时就不会修改用户登录时间。这时另一程序每隔10分钟(或你自己定用户超时间)就检测用户登录表中的用户登录时间与当前时间是不是超过10分钟,如超过表示离线,则删除该用户在用户登录表中的信息。这样在线人数就是用户登录表中的所有记录数了。

28,406

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧