【王巨集喜】在ASP.net中網站訪問量統計方法

iDotNetSpace發表於2008-05-20

一位QQ好友問我個人網站訪問量是如何統計的,由於本人初學做網站,水平有限,所介紹的方法可能是笨方法,但在我網站上能夠湊合著使用,希望大家多多指教

一、建立一個資料表IPStat用於存放使用者資訊

我在IPStat表中存放的使用者資訊只包括登入使用者的IP(IP_Address),IP來源(IP_Src)和登入時間(IP_DateTime),些表的資訊本人只儲存一天的資訊,如果要統計每個月的資訊則要儲存一個月。因為我不太懂對資料日誌的操作,所以建立此表,所以說我笨吧,哈哈。

二、在Global.asax中獲取使用者資訊

Global.asax的Session_Start即新會話啟用時獲取有關的資訊,同時在這裡實現線上人數、訪問總人數的增量統計,程式碼如下:

void Session_Start(object sender, EventArgs e)
{
//獲取訪問者的IP
string ipAddress = Request.ServerVariables["REMOTE_ADDR"];
//獲取訪問者的來源
string ipSrc;
//判斷是否從搜尋引擎導航過來的
if (Request.UrlReferrer == null)
{
ipSrc = "";
}
else
{
//獲取來源地址
ipSrc = Request.UrlReferrer.ToString();
}
//獲取訪問時間
DateTime ipDatetime = DateTime.Now;
//儲存IP資訊到資料庫中
IPControl cont = new IPControl();
cont.AddIP(ipAddress, ipSrc, ipDatetime);

//獲取使用者訪問的頁面
string pageurl = Request.Url.ToString();
//判斷訪問的是否是預設頁
if (pageurl.EndsWith("IPStat.aspx"))
{
//鎖定變數
Application.Lock();
//為頁面訪問量+1
Application["StatCount"] = int.Parse(Application["StatCount"].ToString()) + 1;
//解鎖
Application.UnLock();
}

//鎖定變數
Session.Timeout = 10; //設定超時為10分鐘
Application.Lock();
Application["countSession"] = Convert.ToInt32(Application["countSession"]) + 1;  //訪問總人數+1
Application["onlineWhx"] = (int)Application["onlineWhx"] + 1; //線上人數加+1
Session["login_name"] = null;
//解鎖
Application.UnLock();
}

提醒一句,別忘了下面的程式碼,以實現在使用者離線時,將線上人數減去1.

void Session_End(object sender, EventArgs e)
{
// 在會話結束時執行的程式碼。
// 注意: 只有在 Web.config 檔案中的 sessionstate 模式設定為 InProc 時,才會引發 Session_End 事件。如果會話模式設定為 StateServer
// 或 SQLServer,則不會引發該事件。

//鎖定變數
Application.Lock();
Application["onlineWhx"] = (int)Application["onlineWhx"] - 1; //線上人數減-1
Session["login_name"] = null;
//解鎖
Application.UnLock();
}

三、將以上有關資訊儲存到資料庫IPStat

建立了一個獲取IP資料資訊的類IPControl(),用來實現對資料庫IPStat資料的操作,關於IPControl()類的內容,因為它是C#中對資料庫的操作,以解Sql server 資料庫,就能看懂它,這裡就不作介紹了,請點選該連結檢視。

為了實現將使用者IP資訊存入資料庫,在上面程式碼中對IPControl()進行呼叫

//儲存IP資訊到資料庫中
IPControl cont = new IPControl();
cont.AddIP(ipAddress, ipSrc, ipDatetime);

引數ipAddress為使用者IP,ipSrc為使用者來源, ipDatetime為使用者進入時間。

四、建立定時器,定時操作有關資料

對以上IPSta資料庫的資料,需要建立一個或者幾個定時器,並在每天晚上24時前的10秒鐘內統計一天的流量,然後將其刪除,把統計結果儲存到另一個資料表中,供頁面顯示昨日訪問量是呼叫。定時器的建立和使用請點選建立一個或者幾個定時器,供你參考。

以上不妥之處請批評指正。謝謝!

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-281048/,如需轉載,請註明出處,否則將追究法律責任。

相關文章