写了一份统计网站(ASP.NET)日访问量的源码(保存至数据库,部分性能待优化),运行通过。

  1 <%@ Application Language="C#"%>
  2 <%@ Import Namespace ="System.Data.Sql"%>
  3 <%@ Import Namespace="System.Data" %>
  4 <%@ Import Namespace="System.Data.SqlClient" %>
  5 <%@ Import Namespace="System.Configuration" %>
  6 <script runat="server">
  7     //记录数据库中的访问时间
  8     public static string day;
  9     //统计如访问量
 10     public static int count;
 11     void Application_Start(object sender, EventArgs e)
 12     {//本程序实现日访问量的统计
 13         /*int count = 0;
 14         try
 15         {
 16             using (SqlConnection sc = new SqlConnection(ConfigurationManager.ConnectionStrings["ApplicationServers"].ConnectionString))
 17             {
 18                 sc.Open();
 19                 string cmdText = "select * from Pageview";
 20                 SqlCommand cmd = new SqlCommand(cmdText, sc);
 21                 count = Convert.ToInt32(cmd.ExecuteScalar());
 22                 //Response.Write(count);
 23                 sc.Close();
 24             }
 25         }
 26         catch (SqlException ex)
 27         {
 28             //Response.Write("数据库操作异常:" + ex.Number);
 29         }
 30          Application["counter"] = count;*/
 31          Application["day"] = DateTime.Now.ToString();
 32          Application["counter"] = 0;
 33        // Application["online"] = 0;
 34         
 35     }
 36     
 37     void Application_End(object sender, EventArgs e) 
 38     {
 39       /*  try
 40         {
 41             using (SqlConnection sc = new SqlConnection(ConfigurationManager.ConnectionStrings["ApplicationServers"].ConnectionString))
 42             {
 43                 sc.Open();
 44                 int sum = (int)Application["total"];
 45                 string cmdText = "update Pageview set sums = "+sum;
 46                 SqlCommand cmd = new SqlCommand(cmdText,sc);
 47                 sc.Close();
 48 
 49             }
 50         }
 51         catch (SqlException se)
 52         {
 53             Response.Write("关闭数据库操作更新时异常:"+se.Message); 
 54         }*/
 55     }
 56         
 57     void Application_Error(object sender, EventArgs e) 
 58     { 
 59         // 在出现未处理的错误时运行的代码
 60 
 61     }
 62 
 63     void Session_Start(object sender, EventArgs e) 
 64     {
 65         Application.Lock();
 66         string NowDay = null;       //保存当天的时间
 67         string NewDaystr;           //保存最新的时间
 68         using (SqlConnection sc = new SqlConnection(ConfigurationManager.ConnectionStrings["ApplicationServers"].ConnectionString))
 69         {
 70             sc.Open();
 71             string cmdText = "select * from Pageview";
 72             SqlCommand cmd = new SqlCommand(cmdText,sc);
 73             SqlDataReader sdr = cmd.ExecuteReader();
 74             while (sdr.Read())
 75             {
 76                 count = int.Parse(sdr["sums"].ToString());
 77                 day = sdr["visitTime"].ToString();
 78                 NowDay = DateTime.Now.ToString();
 79             }
 80             sdr.Close();
 81             //将从数据库读出的时间与当前系统的时间进行比对如果比系统时间小则累加
 82             if (DateTime.Compare(Convert.ToDateTime(NowDay), Convert.ToDateTime(day)) >= 0)
 83             {
 84                 count = 0;
 85                 day = DateTime.Now.AddDays(1).ToShortDateString() + " " + "00:00:00";
 86                 NewDaystr = day.ToString();
 87                 //将数据更新到数据库
 88                 string sqlText = string.Format(@"update Pageview set sums = 0,visitTime ='{0}'",NewDaystr);
 89                 cmd.CommandText = sqlText;
 90                 cmd.Connection = sc;
 91                 cmd.ExecuteNonQuery();
 92                 
 93             }
 94             object objtcount = count;
 95             object objday = day;
 96             Application["counter"] = objtcount;
 97             Application["day"] = objday;
 98             //数据的累加
 99             int Stat = 0;
100             //获取Application对象中的日访问量
101             Stat = (int)Application["counter"];
102             Stat += 1;
103             object obj = Stat;
104             Application["counter"] = obj;
105             
106             //将数据写入到数据库
107             string day0 = (string)Application["day"];
108             string Text = string.Format("update Pageview set sums = {0},visitTime = '{1}'",obj,day0.ToString());
109             cmd.CommandText = Text;
110             cmd.Connection = sc;
111             cmd.ExecuteNonQuery();
112             sc.Dispose();
113             sc.Close();           
114         }
115         //Application["online"] = Convert.ToInt32(Application["online"])+1;
116         Application.UnLock();
117 
118     }
119 
120     void Session_End(object sender, EventArgs e) 
121     {
122         // 在会话结束时运行的代码。 
123         // 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
124         // InProc 时,才会引发 Session_End 事件。如果会话模式设置为 StateServer
125         // 或 SQLServer,则不引发该事件。
126        // Application["online"] = Convert.ToInt32(Application["online"])-1;
127 
128     }
129        
130 </script>
View Code

 

posted @ 2013-10-16 01:47  strucoder  阅读(507)  评论(0编辑  收藏  举报