zoukankan      html  css  js  c++  java
  • 网站需要显示在线访问人数

    Insus.NET开发这样多网站,客户一直没有这个要求。不过,现在有客户有这样的要求了。

    在线用户访问人数,也就是说,要为网站写一个计数器,计数器的初始值为0,网站一开始运行时(Application_Start),就开始统计,当有用户访问时(Session_Start)计数器加1,当用户访问离开时(Session_End)计数器减1。

    在网站中,有一个文件叫做Global.asax:



    在程序开始时,定义一个计数器,初始值为0

     Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
            ' Code that runs on application startup
            
            Application("OnlineVisitors") = 0
        End Sub
    View Code


    当有用户访问网站时:

    Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs)
            ' Code that runs when a new session is started
            
            Application.Lock()
            Application("OnlineVisitors") = DirectCast(Application("OnlineVisitors"), Integer) + 1
            Application.UnLock()
        End Sub
    View Code


    当用户离开网站时:

    Sub Session_End(ByVal sender As Object, ByVal e As EventArgs)
            ' Code that runs when a session ends. 
            ' Note: The Session_End event is raised only when the sessionstate mode
            ' is set to InProc in the Web.config file. If session mode is set to StateServer 
            ' or SQLServer, the event is not raised.
            
            Application.Lock()
            Application("OnlineVisitors") = DirectCast(Application("OnlineVisitors"), Integer) - 1
            Application.UnLock()
        End Sub
    View Code


    上面两个Session_Start和Session_End方法中,Insus.NET有使用Application.Lock和Application.Unlock方法,是为了防止多个线程同时改变这个变量,在变更计数器时,先把它Lock起来,更变完毕,再Unlock。


    把Global.asax文件保存,在网页中需要显示网站在线访问人数的位置:

     <%= Application("OnlineVisitors").ToString()%>

     
    测试测试,测试过程中,Insus.NET有使用了两个浏览器,这样是为了让网站获取不同的进程访问者。而每个浏览器打开不同的窗口,所获得到的数据变量。

     后记:
    此种方法,只是做表面功夫,统计不了真正的在线访问人数。如果需要真正实现在线人数统计,还得需要获取访问者的其它参数来一起判断。

  • 相关阅读:
    K折交叉验证
    浅谈python的第三方库——pandas(三)
    关于机器学习二分类问题的几个评估指标辨析
    浅谈python的第三方库——pandas(二)
    浅谈python的第三方库——pandas(一)
    【内核篇】Windows内核重要变量
    【逆向篇】分析一段简单的ShellCode——从TEB到函数地址获取
    【系统篇】从int 3探索Windows应用程序调试原理
    【编程篇】使用操作系统异常巧妙获取交叉链表的交点
    【灌水篇】为什么我们要拼搏北上广
  • 原文地址:https://www.cnblogs.com/insus/p/3107681.html
Copyright © 2011-2022 走看看