不使用数据库,不自动刷新网页实现在线统计.
我的思路是这样的,请大家看看。
GLOBAL.ASA
sub application_onstart()
application.lock()
application("total")=application("total")+1
application.unlock()
end sub
sub application_onend()
application.lock()
application("total")=application("total")-1
application.unlock()
end sub
这样是没问题的,这是记录在线访问人数,这个不会出错,关键是登录用户,这样东西就麻烦了,楼上的朋友的意思我没有理解到。
用户登录的时候就这样
if request.form("password")=rs("password") then
session("users")=rs("username")
session.timeout=999
dim a,b,c
a=split(application("Log"),",")
for b=0 to ubound(a)
if session("users")=a(b) then
......
else
if len(application("Log"))=0 then
application("Log")=session("users")
elseif instr(application("Log"),session("users"))=false then
application("Log")=application("Log")&","&session("users")
end if
end if
Next
end if
这样到是可以正常的放进去,但是用户直接关浏览器,这样没办法执行清除某一个application("Log")啊,当在执行sub application_onend的时候,session("users")已经没有了啊?那就根本没有办法找出在application("Log")里面刚刚消失的一个session("users"),那么这样,用户还是在线啊?我是想一个一个的判断,能够放进去在线,但是不知道怎么清除它,论坛里面我的思路是这样的。
显示贴子的所有回复时候:
do while not rs.eof
dim a,b
a=split(application("Log"),",")
for b=0 to ubound(a)
if rs("username")=a(b) then
response.write("this member online")
else
response.write("this member offline")
end if
next
rs.movenext
不能让网页自动刷,我也不想给用户提供这样的功能,只是做个论坛让大家能聊天,自己刷新就行了。如果自动刷新,服务器受不了啊,还是IBM的专业服务器一样受不了,自动刷新请求这些命令,服务器慢死人,有个朋友写的代码我试过,没问题,但是不能自动刷新来做。我就想直接用个APPLICATION给做出来,我就是在想,用户直接关浏览器的时候执行sub application_onend()...end sub,这个时候SESSION值已经没有了,根本就不能清除它,关键就是只要能判断出是那个SESSION(“UERS”)关闭了浏览器,就可以在sub application_onend()...end sub这个里面把它找出来给清除掉,大家帮帮忙吧.小弟郁闷了好几天了,论坛一值都没有开工,就是因为这个单独在线功能,整不出来。汗。。。
那么可以不精确啊,我的意思就是用户自己进入或者刷新一下网页就显示最新的数据,但是有些用户不正常退出登录的话,没办法把APPLICATION里面的登录用户消除啊,我把所有登录的用户放在一个数据组里面,这样到是可以,但是没有办法在用户不正常退出的时候从数据组里面消除它.超时设置到是可以,但是我不想让它超时,我想让它一天不动计算机才超时.