/// <summary>
/// 今日訪問人數
/// </summary>
public static int todayCount;
/// <summary>
/// 更新今日訪問數的標誌
/// </summary>
static DateTime lastCleanUp;
/// <summary>
/// 鎖對象
/// </summary>
static object _obj = new object();
/// <summary>
/// 日誌文件的路徑
/// </summary>
string logFile = AppDomain.CurrentDomain.BaseDirectory + "visitLog.txt";
protected void Application_Start(object sender, EventArgs e)
{
//剛啓動,爲了防止服務器意外死機重啓等因素,需要從記錄文件中讀取數目
if (System.IO.File.Exists(logFile))
{
string[] lines = System.IO.File.ReadAllLines(logFile);
if (lines.Length >= 2)
{
int.TryParse(lines[0], out todayCount);
DateTime.TryParse(lines[1], out lastCleanUp);
}
}
}
protected void Session_Start(object sender, EventArgs e)
{
//鎖定對象確定單線程訪問
lock (_obj)
{
//如果日期變化了,將今日訪問歸零
if (DateTime.Now.Day != lastCleanUp.Day)
{
lastCleanUp = DateTime.Now;
todayCount = 0;
}
//計數
todayCount++;
//爲了防止服務器死機重啓等意外因素丟失數據,每隔50個訪客更新一下記錄文件
//這個需要根據訪問量調整
if (todayCount % 50 == 0)
{
string[] fns = new string[] { todayCount.ToString(), lastCleanUp.ToString() };
System.IO.File.Delete(logFile);
System.IO.File.WriteAllLines(logFile, fns);
}
}
#region
////獲取用戶訪問的頁面
//string pageurl = Request.Url.ToString();
//if (pageurl.EndsWith("index.aspx")) //判斷訪問的是否是首頁
//{
// //鎖定變量
// Application.Lock();
// //頁面訪問量加一
// Application["StatCount"] = int.Parse(Application["StatCount"].ToString()) + 1;
// //解鎖
// Application.UnLock();
//}
#endregion
}
protected void Application_BeginRequest(object sender, EventArgs e)
{
}
protected void Application_AuthenticateRequest(object sender, EventArgs e)
{
}
protected void Application_Error(object sender, EventArgs e)
{
}
protected void Session_End(object sender, EventArgs e)
{
}
protected void Application_End(object sender, EventArgs e)
{
//保存當前訪問
string[] fns = new string[] { todayCount.ToString(), lastCleanUp.ToString() };
System.IO.File.Delete(logFile);
System.IO.File.WriteAllLines(logFile, fns);
}
}
}