<% Dim RefreshTime,IdleTime,TotalUsers,OnlineUser(),Tmp(),Num,I,ID RefreshTime=10 IdleTime=RefreshTime*3 Application.Lock'OnlineUser '清点所有联机到此网页的用户,然后将目前的用户名称放入数组的最后面 If Application(Session.SessionID&"LastAccessTime")=Empty Then If Application("TotalUsers")=Empty Then Application("TotalUsers")=0 ReDim Tmp(Application("TotalUsers")+1) Num=0 If Application("TotalUsers")>0 Then For I=LBOUND(Application("OnlineUser"))To UBOUND(Application("OnlineUser")) ID=Application("OnlineUser")(I) If ID<>Session.SessionID Then Tmp(Num)=ID Num=Num+1 End If Next End If Tmp(Num)=Session.SessionID Application("TotalUsers")=Num+1 ReDim Preserve Tmp(Application("TotalUsers")) Application("OnlineUser")=Tmp End If '记录米前用户的最近存取时间 Application(Session.SessionID&"LastAccessTime")=Timer'检查所有联机到此网页的用户的最近存取时间,若与目前时间相差30秒以上,表示离线 ReDim Tmp(Application("TotalUsers")) Num=0 For I=0 To Application("TotalUser")-1 ID=Application("OnlineUser")(I) If(Timer-Application(ID&"LastAccessTime"))<IdleTime Then Tmp(Num)=ID Num=Num+1 Else Application(ID&"LastAccessTime") = Empty End If Next'Num 表示目前在线人数,若与Appliation("TotalUser")不同,表示中间有人离线 If Num<>Application("TotalUsers") Then ReDim Preserve Tmp(Num) Application("OnlineUser")=Tmp Application("TotalUsers")=Num End If Application.UnLock %><html> <head> <meta http-equiv="refresh" content="<%= RefreshTime %>, URL=<%= Request.ServerVariables("PATH_INFO")%>"> </head> <body> 目前在线人数: <%= Application("TotalUsers")%> </body> </html> 书上照扳的,但是在线人数一直是0,不知道怎么会事。 高人门看看怎么会事。
用share memory,具体用法见php manual。
给出程序大概的样子: Global.asa <script language="vbscript"> sub application_onstart() application("currentuser")=0 '第一次激活时执行 end sub sub session_onstart() application("currentuser")=application("currentuser")+1 '连接时执行 end sub sub session_onend() application("currentuser")=application("currentuser")-1 ,退出时执行 end sub
end sub sub application_onsend() ,web程序结束是执行 sub end
Dim RefreshTime,IdleTime,TotalUsers,OnlineUser(),Tmp(),Num,I,ID
RefreshTime=10
IdleTime=RefreshTime*3
Application.Lock'OnlineUser
'清点所有联机到此网页的用户,然后将目前的用户名称放入数组的最后面
If Application(Session.SessionID&"LastAccessTime")=Empty Then
If Application("TotalUsers")=Empty Then Application("TotalUsers")=0
ReDim Tmp(Application("TotalUsers")+1)
Num=0
If Application("TotalUsers")>0 Then
For I=LBOUND(Application("OnlineUser"))To UBOUND(Application("OnlineUser"))
ID=Application("OnlineUser")(I)
If ID<>Session.SessionID Then
Tmp(Num)=ID
Num=Num+1
End If
Next
End If
Tmp(Num)=Session.SessionID
Application("TotalUsers")=Num+1
ReDim Preserve Tmp(Application("TotalUsers"))
Application("OnlineUser")=Tmp
End If
'记录米前用户的最近存取时间
Application(Session.SessionID&"LastAccessTime")=Timer'检查所有联机到此网页的用户的最近存取时间,若与目前时间相差30秒以上,表示离线
ReDim Tmp(Application("TotalUsers"))
Num=0
For I=0 To Application("TotalUser")-1
ID=Application("OnlineUser")(I)
If(Timer-Application(ID&"LastAccessTime"))<IdleTime Then
Tmp(Num)=ID
Num=Num+1
Else
Application(ID&"LastAccessTime") = Empty
End If
Next'Num 表示目前在线人数,若与Appliation("TotalUser")不同,表示中间有人离线
If Num<>Application("TotalUsers") Then
ReDim Preserve Tmp(Num)
Application("OnlineUser")=Tmp
Application("TotalUsers")=Num
End If
Application.UnLock
%><html>
<head>
<meta http-equiv="refresh" content="<%= RefreshTime %>, URL=<%= Request.ServerVariables("PATH_INFO")%>">
</head>
<body>
目前在线人数: <%= Application("TotalUsers")%>
</body>
</html>
书上照扳的,但是在线人数一直是0,不知道怎么会事。
高人门看看怎么会事。
Global.asa
<script language="vbscript">
sub application_onstart()
application("currentuser")=0 '第一次激活时执行
end sub
sub session_onstart()
application("currentuser")=application("currentuser")+1
'连接时执行
end sub
sub session_onend()
application("currentuser")=application("currentuser")-1
,退出时执行
end sub
end sub
sub application_onsend()
,web程序结束是执行
sub end
</script>
如何来确认,一个用户在指定的时间内没有动作? 谢谢!