1. 程式人生 > >asp.net 實現線上人數統計

asp.net 實現線上人數統計

在解決方案資源管理器中新增新項,Global.asax,其中程式碼如下:

<%@ Application Language="C#" %>

<script runat="server">

    void Application_Start(object sender, EventArgs e) 
    {
        // 在應用程式啟動時執行的程式碼
        Application["count"] = 0;
    }
    
    void Application_End(object sender, EventArgs e) 
    {
        // 在應用程式關閉時執行的程式碼
        
    }
        
    void Application_Error(object sender, EventArgs e) 
    { 
        // 在出現未處理的錯誤時執行的程式碼

    }

    void Session_Start(object sender, EventArgs e) 
    {
        // 在新會話啟動時執行的程式碼
        Session.Timeout = 1;//超時時間
        Application.Lock();
        Application["count"] = (int)Application["count"]+1;
        Application.UnLock();
    }

    void Session_End(object sender, EventArgs e) 
    {
        // 在會話結束時執行的程式碼。 
        // 注意: 只有在 Web.config 檔案中的 sessionstate 模式設定為
        // InProc 時,才會引發 Session_End 事件。如果會話模式設定為 StateServer 
        // 或 SQLServer,則不會引發該事件。
        //Session.Abandon();
        Application.Lock();
        Application["count"] = (int)Application["count"] - 1;
        Application.Lock();
    }
       
</script>
在首頁面寫入以下:

protected void Page_Load(object sender, EventArgs e)
        {
            Response.Write("當前線上人數:"+Application["count"].ToString());

}
這種方法不是很準確,因為它有一個超時時間,這裡設定的是一分鐘,也就是說一分鐘後才會將對話關閉,觸發Session_End事件,而VS2005中,一般預設是20分鐘,可以通過設定Session.Timeout = 1;//超時時間來改變,最小是一分鐘.

在這裡可以加入資料庫操作,統計總共訪問人數,程式每次啟動時,都將累計訪問人數從資料庫中讀出來,在關閉時寫入資料到資料庫即可,為避免突然斷電等情況,也可以第天或者間隔多久寫一次累計訪問人數,或者每次也行,當然訪問量不能過大.