主頁 > 知識庫 > 被動式統(tǒng)計網(wǎng)站在線人數(shù)

被動式統(tǒng)計網(wǎng)站在線人數(shù)

熱門標簽:廣東語音外呼系統(tǒng)公司 虛擬電話外呼系統(tǒng) 長春公司外呼系統(tǒng)中心 鄭州智能外呼電銷機器人廠家 云南便宜外呼系統(tǒng)平臺 成都ai外呼系統(tǒng)線路 沈陽三五防封電銷卡 沈陽電話機器人公司 鄢陵學(xué)校如何做地圖標注

在學(xué)校里不能上網(wǎng)時,沒事做就改了下blog程序,加上了個blog在線人數(shù)統(tǒng)計。在此之前也看了幾種統(tǒng)計在線人數(shù)的代碼,感覺都不太符合自己的要求,就結(jié)合blog程序自己寫了一個,應(yīng)用到我的blog上。

在Fdream的blog里提到了一些關(guān)于ASP統(tǒng)計在線人數(shù)的方法,具體可以看這里。

為了兼顧準確率與效率,我采用了被動的方式來統(tǒng)計在線人,即當有新訪客時才更新在線人數(shù)。不知道網(wǎng)上有沒有已經(jīng)有人使用了這種方法,不過我現(xiàn)在用的完全是自己想的^_^。

在L-Blog中采用Session來判斷訪客是否為新訪客。Session的超時時間一般為20分鐘,剛好可以用來統(tǒng)計在線人數(shù),即20分鐘內(nèi)的活動訪客認為是在線的。

在commond.asp有如下一段代碼用來記錄訪問記錄:

復(fù)制代碼 代碼如下:

' Guest_IP為訪客的IP
IF Session("GuestIP")>Guest_IP Then
    Dim Guest_Agent,Guest_Refer
    ' Guest_Agent和Guest_Refer訪問記錄要用到
    Guest_Agent=Trim(Request.ServerVariables("HTTP_USER_AGENT"))
    Guest_Refer=Trim(Request.ServerVariables("HTTP_REFERER"))
    ' 添加一個訪問記錄
    Conn.ExeCute("INSERT INTO blog_Counter(coun_IP,coun_Agent,coun_Refer) VALUES
    ('"Guest_IP"','"Guest_Agent"','"Guest_Refer"')")
    ' 訪問次數(shù)加1
    Conn.ExeCute("UPDATE blog_Info SET blog_VisitNums=blog_VisitNums 1")
    SQLQueryNums=SQLQueryNums 2
    ' 用Session保存訪客IP
    Session("GuestIP")=Guest_IP
End IF

為了實現(xiàn)在線人數(shù)統(tǒng)計,我在數(shù)據(jù)庫里做了一些改動:

1. 在表blog_Info添加了1個字段blog_OnlineNums(整型),用來保存網(wǎng)站當前在線人數(shù)

2. 添加了表blog_Onine,字段設(shè)置為:ol_ID(自動編號),ol_IP(字符,20),ol_Time(日期/時間,默認值Now)。

修改后的站點統(tǒng)計代碼如下:
復(fù)制代碼 代碼如下:

'站點統(tǒng)計代碼
IF Session("GuestIP")>Guest_IP Then
    ' 原來的站點訪問計數(shù)器
    Conn.ExeCute("INSERT INTO blog_Counter(coun_IP,coun_Agent,coun_Refer)
    VALUES ('"Guest_IP"','"Guest_Agent"','"Guest_Refer"')")
    Conn.ExeCute("UPDATE blog_Info SET blog_VisitNums=blog_VisitNums+1")
    SQLQueryNums=SQLQueryNums+2
    Session("GuestIP")=Guest_IP
    '在線人數(shù)統(tǒng)計
    ' 判斷在在線列表中是否在在已經(jīng)超時的訪客
    IF Conn.ExeCute("SELECT COUNT(ol_ID) FROM blog_Online
    WHERE DateDiff('n',ol_Time,Now())>20")(0)>0 Then
        ' 如果有則覆蓋一個已超時訪客的記錄
        Conn.ExeCute("UPDATE blog_Online SET ol_IP='"Guest_IP"',
        ol_Time=Now() WHERE ol_ID IN (SELECT TOP 1 ol_ID
        FROM blog_Online WHERE DateDiff('n',ol_Time,Now())>20)")
    Else
        ' 如果沒有則添加一條在線訪客記錄
        Conn.ExeCute("INSERT INTO blog_Online (ol_IP)
        VALUES ('"Guest_IP"')")
    End IF
    ' 統(tǒng)計blog在線人數(shù)
    blog_OnlineNums=Conn.ExeCute("SELECT DISTINCT COUNT(ol_ID)
    FROM blog_Online WHERE DateDiff('n',ol_Time,Now())20")(0)
    ' 更新blog信息中的在線人數(shù)
    Conn.ExeCute("UPDATE blog_Info SET blog_OnlineNums="blog_OnlineNums"")
    SQLQueryNums=SQLQueryNums+3
End IF

這樣,在blog中需要顯示在線人數(shù)的地方引用變量blog_OnlineNums就行了。

并且因為是被動式統(tǒng)計,對blog頁面執(zhí)行時間的影響幾乎可以忽略不計,另外,這個方法統(tǒng)計的blog在線人數(shù)也有一定的準確性,可以滿足一般的需求了。

您可能感興趣的文章:
  • 不用Global.asa也能實現(xiàn)統(tǒng)計在線人數(shù)嗎?
  • 統(tǒng)計在線人數(shù)是實時的嗎?
  • asp論壇在線人數(shù)統(tǒng)計研究
  • 也談php網(wǎng)站在線人數(shù)統(tǒng)計
  • javascript 傳統(tǒng)事件模型構(gòu)造的事件監(jiān)聽器實現(xiàn)代碼
  • c#顯示當前在線人數(shù)示例
  • 封裝了一個支持匿名函數(shù)的Javascript事件監(jiān)聽器
  • php+memcache實現(xiàn)的網(wǎng)站在線人數(shù)統(tǒng)計代碼
  • PHP+jquery實時顯示網(wǎng)站在線人數(shù)的方法
  • jsp利用application統(tǒng)計在線人數(shù)的方法
  • php實現(xiàn)統(tǒng)計網(wǎng)站在線人數(shù)的方法
  • ASP.NET中使用Application對象實現(xiàn)簡單在線人數(shù)統(tǒng)計功能
  • php使用Session和文件統(tǒng)計在線人數(shù)
  • 淺析JAVA中過濾器、監(jiān)聽器、攔截器的區(qū)別
  • 利用java監(jiān)聽器實現(xiàn)在線人數(shù)統(tǒng)計

標簽:孝感 遼陽 湖北 防城港 馬鞍山 四平 朝陽 平頂山

巨人網(wǎng)絡(luò)通訊聲明:本文標題《被動式統(tǒng)計網(wǎng)站在線人數(shù)》,本文關(guān)鍵詞  被動式,統(tǒng)計,網(wǎng)站,在線,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《被動式統(tǒng)計網(wǎng)站在線人數(shù)》相關(guān)的同類信息!
  • 本頁收集關(guān)于被動式統(tǒng)計網(wǎng)站在線人數(shù)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章