欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > ASP.net中網站訪問量統計方法代碼

ASP.net中網站訪問量統計方法代碼

熱門標簽:地圖標注多少錢一張 宿遷智能外呼系統排名 福州人工智能電銷機器人加盟 電銷機器人 數據 廣州銷售外呼系統定制 ai電銷機器人對貸款有幫助嗎 云狐人工智能電話機器人 怎樣給陜西地圖標注顏色 400電話辦理信任翰諾科技

一、建立一個數據表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秒鐘內統計一天的流量,然后將其刪除,把統計結果保存到另一個數據表中,供頁面顯示昨日訪問量是調用。定時器的創建和使用請點擊創建一個或者幾個定時器,供你參考。

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

在ASP.net中網站訪問量統計方法—獲取IP數據信息的類

復制代碼 代碼如下:

using System;
using System.Data;
using System.Data.SqlClient;
using System.Text;

///
/// 獲取IP數據信息的類
///
public class IPControl
{
//常量用來表示T-SQL語句中用到的變量名稱
private const string PARM_IP_ADDRESS = "@IPAddress";
private const string PARM_IP_SRC = "@IPSrc";
private const string PARM_IP_DATETIME = "@IPDateTime";
//T-SQL語句
private const string SQL_INSERT_IPSTAT = "INSERT INTO IPStat VALUES(@IPAddress,@IPSrc,@IPDateTime)";
private const string SQL_DELETE_IPSTAT = "delete from IPStat WHERE DATEDIFF(d,ip_datetime,getdate())>30"; //只保留一個月的數據
private const string SQL_SELECT_TOTAL = "SELECT COUNT(*) FROM IPStat ";
private const string SQL_SELECT_TODAY = "SELECT COUNT(*) FROM IPStat WHERE DATEDIFF(d,ip_datetime,getdate())=0";
private const string SQL_SELECT_YESTERDAY = "SELECT COUNT(*) FROM IPStat WHERE DATEDIFF(d,ip_datetime,getdate())=1";
private const string SQL_SELECT_MONTH = "SELECT COUNT(*) FROM IPStat WHERE DATEDIFF(d,ip_datetime,getdate())30 and DATEDIFF(mm,ip_datetime,getdate())=0";

public IPControl()
{
}
///
/// 保存IP數據信息到數據庫
///
///
///
public void AddIP(string ipAddress,string ipSrc,DateTime ipDatetime)
{
//構建連接語句字符串
StringBuilder strSQL = new StringBuilder();
//創建表示QQ號的參數
SqlParameter[] parms = new SqlParameter[] { new SqlParameter(PARM_IP_ADDRESS, SqlDbType.NVarChar, 20),
new SqlParameter(PARM_IP_SRC, SqlDbType.NVarChar,80),
new SqlParameter(PARM_IP_DATETIME, SqlDbType.DateTime)};
SqlCommand cmd = new SqlCommand();

// 依次給參數賦值,并添加到執行語句中
parms[0].Value = ipAddress;
parms[1].Value = ipSrc;
parms[2].Value = ipDatetime;
foreach(SqlParameter parm in parms)
cmd.Parameters.Add(parm);

//定義對象資源保存的范圍,一旦using范圍結束,將釋放對方所占的資源
using (SqlConnection conn = new SqlConnection(SqlHelper.ConnectionStringLocalTransaction))
{
//在執行字符串中加載插入語句
strSQL.Append(SQL_INSERT_IPSTAT);
conn.Open();

//設定SqlCommand的屬性
cmd.Connection = conn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = strSQL.ToString();
//執行SqlCommand命令
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
//如果執行成功,返回true,否則false。
}
}
public string GetTotal()
{
//調用SqlHelper訪問組件的方法返回第一行第一列的值
object count = SqlHelper.ExecuteScalar(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, SQL_SELECT_TOTAL, null);
//返回統計結果
return count.ToString();
}
public string GetToday()
{
//調用SqlHelper訪問組件的方法返回第一行第一列的值
object count = SqlHelper.ExecuteScalar(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, SQL_SELECT_TODAY, null);
//返回統計結果
return count.ToString();
}
public string GetYesterday()
{
//調用SqlHelper訪問組件的方法返回第一行第一列的值
object count = SqlHelper.ExecuteScalar(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, SQL_SELECT_YESTERDAY, null);
//返回統計結果
return count.ToString();
}
public string GetMonth()
{
//調用SqlHelper訪問組件的方法返回第一行第一列的值
object count = SqlHelper.ExecuteScalar(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, SQL_SELECT_MONTH, null);
//返回統計結果
return count.ToString();
}
}

在Global.asax中使用定時器來統計在線人數和每天每月的訪問量

一、在 Application_Start 中創建定時器

復制代碼 代碼如下:

//以下為使用多個定時器System.Timers.Timer的處理方法
//用thread重新包一下,定義兩個定時器
System.Threading.Thread myTimer_1 = new System.Threading.Thread(new System.Threading.ThreadStart(write_1));
myTimer_1.Start();
System.Threading.Thread myTimer_2 = new System.Threading.Thread(new System.Threading.ThreadStart(write_2));
myTimer_2.Start();

二、使用定時器每10分鐘更新一次在線人數檢查一次是否要存入一天流量的信息

復制代碼 代碼如下:

//使用第一個定時器,每10分鐘更新一次在線人數
private void write_1()
{
//以下使用System.Timers.Timer類 每間隔10分鐘存一次數據
System.Timers.Timer myTimer1 = new System.Timers.Timer(600000); //實例化Timer類,設置間隔時間為600000毫秒(10分鐘存一次總人數);
myTimer1.Enabled = true; //是否執行System.Timers.Timer.Elapsed事件;
myTimer1.Elapsed += new System.Timers.ElapsedEventHandler(myTimer_Elapsed); //到達時間的時候執行事件myTimer_Elapsed;
myTimer1.AutoReset = true; //設置是執行一次(false)還是一直執行(true);
}
//使用第二個定時器,
private void write_2()
{
//以下使用System.Timers.Timer類 每間隔10分鐘檢查一次是否要存入一天流量的信息
System.Timers.Timer myTimer2 = new System.Timers.Timer(600000); //實例化Timer類,設置間隔時間為600000毫秒(10分鐘存一次總人數);
myTimer2.Enabled = true; //是否執行System.Timers.Timer.Elapsed事件;
myTimer2.Elapsed += new System.Timers.ElapsedEventHandler(myTimer_peopleDay); //到達時間的時候執行事件myTimer_peopleDay;
myTimer2.AutoReset = true; //設置是執行一次(false)還是一直執行(true);
}

三、創建 myTimer過程來處理在線人數和統計每日、月、年的流量

復制代碼 代碼如下:

//創建 myTimer_Elapsed 過程并定義第一個定時器事件,要用來處理在線人數的代碼
private void myTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
//如果現在的在現人數大于原有的在現人數,則替換數據表中的在現人數
int MaxOnline = Convert.ToInt32(Application["OnlineMax"]);
int MinOnline = Convert.ToInt32(Application["OnlineWhx"]);
if (MaxOnline MinOnline)
{
SqlConnection con = Db.DB.createconnection();
con.Open();
SqlCommand cmd = new SqlCommand("update countpeople set totol='" + Application["countSession"].ToString() + "',OnLine=+'" + Application["onlineWhx"] + "',DataTimes='" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "'", con);
cmd.ExecuteNonQuery();
con.Close();
Application["OnlineMax"] = Application["OnlineWhx"]; //將現在線人數賦于OnlineMax
Application["dataTimes"] = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
}
else
{
//將總訪問人數寫入數據庫
SqlConnection con = Db.DB.createconnection();
con.Open();
SqlCommand cmd = new SqlCommand("update countpeople set totol=" + Application["countSession"].ToString(), con);
cmd.ExecuteNonQuery();
con.Close();
}
}
//創建 myTimer_peopleDay 過程并定義第二個定時器事件,要用來統計每日、月、年的流量
private void myTimer_peopleDay(object sender, System.Timers.ElapsedEventArgs e)
{
try
{
//當天晚上24時
if (DateTime.Now.Hour == 23)
{
if (DateTime.Now.Minute >= 50)
{
//當天晚上24時,寫入一天的流量
//初始化一個iP數據訪問對象
IPControl cont = new IPControl();
//獲取今天訪問量
Int32 countToday = Convert.ToInt32(cont.GetToday());
//獲取本月訪問量
Int32 countMonth = Convert.ToInt32(cont.GetMonth());

//存儲過程名sp_InsertCountPeopleDay
SqlConnection con1 = Db.DB.createconnection();
con1.Open();
SqlCommand cmd1 = new SqlCommand("sp_InsertCountPeopleDay", con1);
cmd1.CommandType = CommandType.StoredProcedure; //存儲過程名

//調用并設置存儲過程參數
cmd1.Parameters.Add(new SqlParameter("@peopleDay", SqlDbType.Int));
cmd1.Parameters.Add(new SqlParameter("@dateTimes", SqlDbType.DateTime));

//給參數賦值
cmd1.Parameters["@peopleDay"].Value = countToday;
cmd1.Parameters["@dateTimes"].Value = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");

cmd1.ExecuteNonQuery();
con1.Close();

//在一個月的最后一天寫入本月的訪問量
//取本月最后一天(30或者31日)
DateTime lastDay = Convert.ToDateTime(DateTime.Now.AddMonths(1).ToString("yyyy-MM-01")).AddDays(-1);
int lastDay1 = DateTime.Now.Day; //取當前時間的日期
if (lastDay1.ToString() == lastDay.ToString()) //如果前日期等于本月最后一天的日期,則前本月的流量寫入數據庫
{
SqlConnection conM = Db.DB.createconnection();
conM.Open();
SqlCommand cmdM = new SqlCommand("sp_InsertCountPeopleMonth", conM);
cmdM.CommandType = CommandType.StoredProcedure; //存儲過程名

//調用并設置存儲過程參數
cmdM.Parameters.Add(new SqlParameter("@peopleMonth", SqlDbType.Int));
cmdM.Parameters.Add(new SqlParameter("@dateTimeMonth", SqlDbType.DateTime));

//給參數賦值
cmdM.Parameters["@peopleMonth"].Value = countMonth;
cmdM.Parameters["@dateTimeMonth"].Value = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");

cmdM.ExecuteNonQuery();
conM.Close();
}
}
}
}
catch
{

}
}

您可能感興趣的文章:
  • .net 應對網站訪問壓力的方案總結
  • 用IIS建立的.net網站通過IP地址不能訪問解決方法
  • ASP.NET網站第一次訪問慢的解決方法

標簽:延安 曲靖 新疆 宜春 黃南 焦作 大興安嶺 綿陽

巨人網絡通訊聲明:本文標題《ASP.net中網站訪問量統計方法代碼》,本文關鍵詞  ASP.net,中,網站,訪問量,統計,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《ASP.net中網站訪問量統計方法代碼》相關的同類信息!
  • 本頁收集關于ASP.net中網站訪問量統計方法代碼的相關信息資訊供網民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    制服丝袜在线第一页| 男人的天堂官网| 色综合欧美在线| 中文字幕成人av| 国产精品 欧美精品| 亚洲av成人无码久久精品| 久久精品视频18| 欧美日韩亚洲综合在线 | 亚洲精品国产精华液| 成人久久视频在线观看| 国产日产精品一区二区三区的介绍 | 国产成人超碰人人澡人人澡| 亚洲熟妇一区二区三区| 4438x亚洲最大成人网| 午夜一区二区三区视频| 99re这里只有| 日韩欧美一区二区免费| 麻豆精品精品国产自在97香蕉| 六十路息与子猛烈交尾| 91精品国产入口| 蜜桃视频一区二区| 永久免费成人代码| 精品黑人一区二区三区久久 | 日本在线播放一区二区三区| 最新在线黄色网址| 精品国产一区a| 国内外成人在线| 在线日韩国产网站| 中文字幕亚洲电影| 亚洲精品久久久久久| 7777精品伊人久久久大香线蕉| 男人的天堂亚洲一区| 欧美熟妇激情一区二区三区| 国产网站一区二区| 成人激情动漫在线观看| 欧美在线观看禁18| 天天爽夜夜爽夜夜爽精品视频| 无码国产69精品久久久久网站| 91精品国产综合久久久久久久| 毛片不卡一区二区| 91制片厂在线| 亚洲激情图片一区| 日韩在线免费观看av| 国产丝袜欧美中文另类| 99这里只有精品| 666欧美在线视频| 久久99国产精品免费| 欧美精品久久久久久久久46p| 一区二区三区日韩精品视频| 菠萝菠萝蜜网站| 日本一区二区三区在线观看| 无码人妻少妇色欲av一区二区| 欧美一区二区女人| 高清在线不卡av| 欧美日韩美少妇| 国内精品第一页| 在线影院国内精品| 美腿丝袜一区二区三区| 中文字幕亚洲欧美日韩| 首页国产丝袜综合| 来吧亚洲综合网| 亚洲va欧美va国产va天堂影院| 国产又黄又粗视频| 怡红院av一区二区三区| 午夜理伦三级做爰电影| 亚洲欧美日韩小说| 久久精品成人av| 亚洲乱码中文字幕综合| 亚洲最大成人网站| 亚洲女与黑人做爰| 久久婷婷五月综合| 亚洲美女视频在线观看| 蜜桃传媒一区二区亚洲| 亚洲丶国产丶欧美一区二区三区| 日本高清黄色片| 亚洲r级在线视频| 日本一级片免费| 免费在线观看一区二区三区| 在线免费观看日本欧美| 国产在线播放一区三区四| 欧美日韩一区二区三区视频| 国产成人精品影视| 日韩欧美中文字幕公布| 97超碰欧美中文字幕| 国产亚洲成aⅴ人片在线观看 | 国产无遮挡在线观看| 亚洲国产精品久久人人爱| 国产精品夜夜夜爽阿娇| 人禽交欧美网站| 欧美性大战久久久久久久蜜臀| 国产福利91精品一区二区三区| 欧美一区永久视频免费观看| 丁香六月综合激情| 精品久久人人做人人爱| 不许穿内裤随时挨c调教h苏绵 | 无码少妇精品一区二区免费动态| 亚洲一级不卡视频| 69av视频在线| 国产麻豆欧美日韩一区| 日韩一级黄色片| 91精品人妻一区二区三区蜜桃2| 欧美激情一区三区| 性欧美精品男男| 日韩avvvv在线播放| 欧美日韩中文字幕一区| www.亚洲精品| 亚洲国产精品精华液2区45| 成年人网站免费在线观看| 亚洲地区一二三色| 欧美中文字幕不卡| av不卡免费电影| 中文字幕一区二区三区色视频| 成人做爰69片免网站| 精品一区二区三区在线播放| 欧美电影免费观看高清完整版在线| 国产一线在线观看| 午夜久久久久久电影| 欧美色爱综合网| 69久久精品无码一区二区| 综合电影一区二区三区| 69xx绿帽三人行| av一区二区不卡| 亚洲天堂久久久久久久| 亚洲成人生活片| 成人国产精品免费网站| 国产精品久久久久久亚洲毛片| 青青操在线视频观看| 国产成人在线看| 中文字幕乱码日本亚洲一区二区| 懂色av粉嫩av浪潮av| 国产麻豆精品95视频| 国产日韩欧美精品在线| 亚洲色图27p| 高清国产一区二区| 中文字幕一区日韩精品欧美| 一本色道亚洲精品aⅴ| 99久久综合国产精品| 亚洲激情欧美激情| 欧美色图12p| 色综合久久五月| 免费日韩伦理电影| 久久午夜电影网| 久久99久久99精品免费看小说| 粉嫩av一区二区三区在线播放| 中文字幕亚洲一区二区av在线| 在线看一区二区| 国产高潮视频在线观看| 美女诱惑一区二区| 久久精品亚洲精品国产欧美| 精品无码一区二区三区蜜臀| 99久久综合色| 三级久久三级久久久| 精品黑人一区二区三区久久| 久久精品日韩无码| 一色屋精品亚洲香蕉网站| 在线免费亚洲电影| 国产成人自拍网| 亚洲手机成人高清视频| 在线中文字幕不卡| chinese麻豆新拍video| 日本va欧美va精品发布| 国产盗摄视频一区二区三区| 日韩欧美电影在线| 精品国产aaa| 成人免费av在线| 亚洲五码中文字幕| 精品久久免费看| 久久精品黄色片| 完美搭档在线观看| 国内精品在线播放| 亚洲美女一区二区三区| 日韩欧美一区中文| 99re6热在线精品视频| 91小视频免费看| 蜜臀久久99精品久久久久久9| 国产亚洲精品福利| 欧美性猛片aaaaaaa做受| 成年人网站免费看| 成人激情图片网| 日韩va欧美va亚洲va久久| 欧美激情中文不卡| 欧美欧美午夜aⅴ在线观看| 精品日韩在线视频| av在线天堂网| 国产精品99精品久久免费| 亚洲综合一二区| 久久影音资源网| 欧美性做爰猛烈叫床潮| a资源在线观看| jjzz黄色片| 国产精品一区二区三区99| 亚洲成人av资源| 国产精品久久久久久久裸模| 欧美一区二区三区视频| 欧美日韩午夜视频| 久久精品成人av| 色欲欲www成人网站| 国产高清视频一区| 日韩av在线发布| 亚洲美女屁股眼交3|