asp vb.net 在线统计 简单版本 和精确版本
2009-11-12 18:12
288 查看
asp
简单在线统计版本
asp精确版本,测试通过
global.asa
在global 里面使用Server.MapPath需要相当注意,如果你的页面还有文件夹的话,
需要添加判断路径是否存在!if fsObj.FileExists(FilePath) then end if
还有就是Sub Application_OnStart 是表示当 iisreset 以后,第一个访问页面会执行到!所以有可能第一个页面访问的不是根目录的文件,那么 FilePath=Server.MapPath("upload")&"//txtcounter.txt" 就不会存在!也就是 Application("TotalUsers") = 0 !从新开始计数
vb.net 精确版本,测试通过
简单在线统计版本
在Global.asa文件中加入如下的代码: Asp代码 1. <SCRIPT LANGUAGE="VBScript" RUNAT="Server"> 2. 3. Sub Application_OnStart 4. 5. '当服务器开启时,设置在线用户计数器为0 6. Application("ActiveUsers") = 0 7. 8. '设置每天访问量为0 9. Application("EveryDayUsers") = 0 10. '访问的时间为 11. Application("RecordDate") = "2009-01-01" 12. 13. End Sub 14. 15. Sub Session_OnStart 16. 17. '设置Session对象的有效时间为20分钟(也可以更长,但是越长对服务器的资源'占用越多,因为服务器不接受少于20分钟的有效时间,所以设置少于20分钟的'有效时间是无效的) 18. Session.Timeout = 30 19. 20. ' 当开始一个Session时在线用户计数器加1 21. Application.Lock 22. Application("ActiveUsers") = Application("ActiveUsers") + 1 23. 24. '每天的访问量加1 25. if Application("RecordDate") <> Date() Then 26. Application.Lock 27. Application("RecordDate") = Date() 28. Application("EveryDayUsers") = 1 29. Application.UnLock 30. else 31. Application.Lock 32. Application("EveryDayUsers") = Application("EveryDayUsers")+1 33. Application.UnLock 34. end if 35. 36. '统计总访问量 37. CountFile=Server.MapPath("txtcounter.txt") 38. Set FileObject=Server.CreateObject("Scripting.FileSystemObject") 39. Set Out=FileObject.OpenTextFile(CountFile,1,FALSE,FALSE) 40. counter=Out.ReadLine 41. Out.Close 42. SET FileObject=Server.CreateObject("Scripting.FileSystemObject") 43. Set Out=FileObject.CreateTextFile(CountFile,TRUE,FALSE) 44. Application.lock 45. counter= counter + 1 46. Application("TotalUsers") = counter 47. Out.WriteLine(counter) 48. Application.unlock 49. Out.Close 50. 51. 52. 53. End Sub 54. 55. 56. Sub Session_OnEnd 57. 58. '当结束一个Session时用户计数器减1 59. Application.Lock 60. Application("ActiveUsers") = Application("ActiveUsers") - 1 61. Application.UnLock 62. 63. End Sub 64. 65. </SCRIPT> <SCRIPT LANGUAGE="VBScript" RUNAT="Server"> Sub Application_OnStart '当服务器开启时,设置在线用户计数器为0 Application("ActiveUsers") = 0 '设置每天访问量为0 Application("EveryDayUsers") = 0 '访问的时间为 Application("RecordDate") = "2009-01-01" End Sub Sub Session_OnStart '设置Session对象的有效时间为20分钟(也可以更长,但是越长对服务器的资源'占用越多,因为服务器不接受少于20分钟的有效时间,所以设置少于20分钟的'有效时间是无效的) Session.Timeout = 30 ' 当开始一个Session时在线用户计数器加1 Application.Lock Application("ActiveUsers") = Application("ActiveUsers") + 1 '每天的访问量加1 if Application("RecordDate") <> Date() Then Application.Lock Application("RecordDate") = Date() Application("EveryDayUsers") = 1 Application.UnLock else Application.Lock Application("EveryDayUsers") = Application("EveryDayUsers")+1 Application.UnLock end if '统计总访问量 CountFile=Server.MapPath("txtcounter.txt") Set FileObject=Server.CreateObject("Scripting.FileSystemObject") Set Out=FileObject.OpenTextFile(CountFile,1,FALSE,FALSE) counter=Out.ReadLine Out.Close SET FileObject=Server.CreateObject("Scripting.FileSystemObject") Set Out=FileObject.CreateTextFile(CountFile,TRUE,FALSE) Application.lock counter= counter + 1 Application("TotalUsers") = counter Out.WriteLine(counter) Application.unlock Out.Close End Sub Sub Session_OnEnd '当结束一个Session时用户计数器减1 Application.Lock Application("ActiveUsers") = Application("ActiveUsers") - 1 Application.UnLock End Sub </SCRIPT> 为了实现定时刷新页面数据信息,用单独的一个页面来存放对这些数据的访问 online.asp Java代码 1. <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> 2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 3. <html xmlns="http://www.w3.org/1999/xhtml"> 4. <head> 5. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 6. <meta http-equiv="Refresh" content="10"><!--设置自动刷新--> 7. <title>在线人数</title> 8. </head> 9. 10. <body style="width:190px; margin:0px; height:100%"> 11. 今天的访问量为:<%= Application("EveryDayUsers") %>人<br /> 12. 当前在线人数:<%= Application("ActiveUsers") %>人<br /> 13. 总访问量: <%= Application("TotalUsers") %>人 14. </body> 15. </html> <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <meta http-equiv="Refresh" content="10"><!--设置自动刷新--> <title>在线人数</title> </head> <body style="width:190px; margin:0px; height:100%"> 今天的访问量为:<%= Application("EveryDayUsers") %>人<br /> 当前在线人数:<%= Application("ActiveUsers") %>人<br /> 总访问量: <%= Application("TotalUsers") %>人 </body> </html> 在主页面中引用这个页面即可 Java代码 1. <IFRAME name="online" SRC="online.asp" mce_SRC="online.asp" align="center" frameborder="0" width="190" height="80px" scrolling="no"> </IFRAME>
asp精确版本,测试通过
<% 'RefreshTime变量一定要在此宣告,否则无法在网页中以 RefreshTime 方式存取 Dim RefreshTime Dim IdleTime, Num, I Dim Tmp() Dim ID RefreshTime = 10 '设定网页自动更新时间为10秒 IdleTime = RefreshTime * 3 '设定空闲时间为自动更新时间的3倍 Session("Flag") = True '新增此Session变量以使Session对象能正常运作 Application.Lock '清点所有联机到此网页的浏览器,然后将目前开启之浏览器的SessionID放入数组的最后 If isempty(Application(Session.SessionID & "LastAccessTime") )= true Then If isempty(Application("ActUsers") )=true Then Application ("ActUsers")=0 ReDim Tmp(Application("ActUsers") + 1) Num = 0 If Application("ActUsers") > 0 Then For I = 0 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 ("ActUsers")= Num + 1 ReDim Preserve Tmp(Application("ActUsers")) Application("OnlineUser" )= Tmp End If '记录目前开启之浏览器的最近访问时间 Application (Session.SessionID & "LastAccessTime" )=Timer '检查所有联机到此网页之浏览器的最近访问时间,如果与目前时间相差30秒以上,表示结束联机 ReDim Tmp(Application("ActUsers")) Num = 0 For I = 0 To Application("ActUsers") - 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表示目前在线人数,如果与Application("ActUsers") 不同,表示中间有人断线 If Num <> Application("ActUsers") Then ReDim Preserve Tmp(Num) Application ("OnlineUser")= Tmp Application ("ActUsers")= Num End If Application.UnLock %> <html> <head> <meta http-equiv="Refresh" content="<%= RefreshTime %>, url=<%= Request.ServerVariables("Url") %>"> </head> <body> <%response.write"目前在线人数:" & Application("ActUsers") response.write"总访问人数:" & Application("TotalUsers") ' 这个只要在global.asa里面出来就可以 %> </body> </html>
global.asa
在global 里面使用Server.MapPath需要相当注意,如果你的页面还有文件夹的话,
需要添加判断路径是否存在!if fsObj.FileExists(FilePath) then end if
还有就是Sub Application_OnStart 是表示当 iisreset 以后,第一个访问页面会执行到!所以有可能第一个页面访问的不是根目录的文件,那么 FilePath=Server.MapPath("upload")&"//txtcounter.txt" 就不会存在!也就是 Application("TotalUsers") = 0 !从新开始计数
ub Application_OnStart Application("TotalUsers") = 0 '//当服务器开启时,获取文本中的统计总访问量 dim fsObj,txtsObj,FilePath set fsObj=CreateObject("Scripting.FileSystemObject") FilePath=Server.MapPath("upload")&"//txtcounter.txt" if fsObj.FileExists(FilePath) then set txtsObj=fsObj.OpenTextFile(FilePath) Application("TotalUsers") =txtsObj.ReadLine txtsObj.Close end if '//当服务器开启时,获取文本中的统计总访问量 End Sub Sub Session_OnStart '//当用户第一次访问时总数加1写入文本 dim fsObj,txtsObj,FilePath set fsObj=CreateObject("Scripting.FileSystemObject") FilePath=Server.MapPath("upload")&"//txtcounter.txt" if fsObj.FileExists(FilePath) then set fsObj=fsObj.OpenTextFile(FilePath, 2, True) Application.lock Application("TotalUsers") = Application("TotalUsers")+1 Application.unlock fsObj.Write(Application("TotalUsers")) fsObj.Close '//当用户第一次访问时总数加1写入文本 end if End Sub
vb.net 精确版本,测试通过
<%@ Page Language="VB" %> <Script runat="server"> 'RefreshTime变量一定要在此宣告,否则无法在网页中以 <%= RefreshTime %> 方式存取 Dim RefreshTime As Integer Sub Page_Load(ByVal sender as Object, ByVal e as System.EventArgs) Dim IdleTime, Num, I As Integer Dim Tmp(), ID As String RefreshTime = 10 '设定网页自动更新时间为10秒 IdleTime = RefreshTime * 3 '设定空闲时间为自动更新时间的3倍 Session("Flag") = True '新增此Session变量以使Session对象能正常运作 Application.Lock '清点所有联机到此网页的浏览器,然后将目前开启之浏览器的SessionID放入数组的最后 If Application(Session.SessionID & "LastAccessTime") = Nothing Then If Application("TotalUsers") = Nothing Then Application.Set("TotalUsers", 0) ReDim Tmp(Application("TotalUsers") + 1) Num = 0 If Application("TotalUsers") > 0 Then For I = 0 To UBound(Application("OnlineUser")) ID = Application("OnlineUser")(I) If ID <> Session.SessionID Then Tmp(Num) = ID Num += 1 End If Next End If Tmp(Num) = Session.SessionID Application.Set("TotalUsers", Num + 1) ReDim Preserve Tmp(Application("TotalUsers")) Application.Set("OnlineUser", Tmp) End If '记录目前开启之浏览器的最近访问时间 Application.Set(Session.SessionID & "LastAccessTime", Microsoft.VisualBasic.DateAndTime.Timer) '检查所有联机到此网页之浏览器的最近访问时间,如果与目前时间相差30秒以上,表示结束联机 ReDim Tmp(Application("TotalUsers")) Num = 0 For I = 0 To Application("TotalUsers") - 1 ID = Application("OnlineUser")(I) If (Microsoft.VisualBasic.DateAndTime.Timer - Application(ID & "LastAccessTime")) < IdleTime Then Tmp(Num) = ID Num += 1 Else Application.Set(ID & "LastAccessTime", Nothing) End If Next 'Num表示目前在线人数,如果与Application("TotalUsers") 不同,表示中间有人断线 If Num <> Application("TotalUsers") Then ReDim Preserve Tmp(Num) Application.Set("OnlineUser", Tmp) Application.Set("TotalUsers", Num) End If myCounter.Text = "目前在线人数:" & Application("TotalUsers") Application.UnLock End Sub </Script> <html> <head> <meta http-equiv="Refresh" content="<%= RefreshTime %>, url=<%= Request.ServerVariables("Url") %>"> </head> <body> <Asp:Label Runat="Server" Id="myCounter" /> </body> </html>
相关文章推荐
- ASP.NET中在线用户统计的简单实现及讨论
- xmlhttp ASP.NET在线用户列表 关闭浏览器 精确统计 单人登陆
- ASP.NET中使用Application对象实现简单在线人数统计功能
- ASP.NET中在线用户统计的简单实现及讨论
- ASP.NET中使用Application对象实现简单在线人数统计功能
- xmlhttp ASP.NET在线用户列表 关闭浏览器 精确统计 单人登陆
- xmlhttp ASP.NET在线用户列表 关闭浏览器 精确统计 单人登陆
- ASP.NET中在线用户统计的简单实现及讨论
- ASP.NET一个简单的在线人数统计办法
- asp.net 在线人数统计,页面访问量 Application ,session
- asp.net统计在线人数
- ASP.NET 在线统计的研究
- ASP.NET中在线用户统计
- asp.net 验证码的简单制作(vb.net+C#)
- ASP.NET版本简单的留言板的制作
- 用ASP.NET实现在线用户统计
- 用ASP.NET实现在线用户统计
- ASP.NET MVC 4 中Jquery上传插件Uploadify简单使用-版本:3.2.1
- asp.net在线人数统计
- asp.net 在线人数统计,页面访问量 Application ,session