Insus.NET開發這樣多網站,客戶一直沒有這個要求。不過,現在有客戶有這樣的要求了。線上用戶訪問人數,也就是說,要為網站寫一個計數器,計數器的初始值為0,網站一開始運行時(Application_Start),就開始統計,當有用戶訪問時(Session_Start)計數器加1,當用戶訪問離開時( ...
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 SubView 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 SubView 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 SubView Code
上面兩個Session_Start和Session_End方法中,Insus.NET有使用Application.Lock和Application.Unlock方法,是為了防止多個線程同時改變這個變數,在變更計數器時,先把它Lock起來,更變完畢,再Unlock。
把Global.asax文件保存,在網頁中需要顯示網站線上訪問人數的位置:
<%= Application("OnlineVisitors").ToString()%>
測試測試,測試過程中,Insus.NET有使用了兩個瀏覽器,這樣是為了讓網站獲取不同的進程訪問者。而每個瀏覽器打開不同的視窗,所獲得到的數據變數。
後記:
此種方法,只是做錶面功夫,統計不了真正的線上訪問人數。如果需要真正實現線上人數統計,還得需要獲取訪問者的其它參數來一起判斷。
關註 - 0
粉絲 - 2076 榮譽:推薦博客 +加關註 3 0 (請您對文章做出評價) « 上一篇:使用RenderControl方法實現動態載入用戶控制項
» 下一篇:文章的點擊訪問怎樣實現統計