網站需要顯示在線訪問人數


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有使用了兩個瀏覽器,這樣是為了讓網站獲取不同的進程訪問者。而每個瀏覽器打開不同的窗口,所獲得到的數據變量。

 

 后記:
此種方法,只是做表面功夫,統計不了真正的在線訪問人數。如果需要真正實現在線人數統計,還得需要獲取訪問者的其它參數來一起判斷。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM