統計網站當天的訪問量

 /// <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);
        }
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章