用ASP設計網站在線人數統計程序

    在這個時段內同計各個不同IP的訪客總數,就可以得出當前的線上人數了,但這裏有一個精確問題需要解決,至於用什麼辦法來精確地統計,那就是各人不同的做法了,比如可以用自動提交的頁面,隔一段時間讀取COOKIES等等,而在ASP中,有一個更好的技巧,就是使用session對象來統計,這裏介紹一下gobal.asa這個文件,這是一個很重要的一個文件,請看看它的結構。

<SCRIPT LANGUAGE="VBScript" RUNAT="Server">

Sub Session_OnStart

End Sub

Sub Session_OnEnd

End Sub

sub Application_OnStard

End Sub

sub Application_OnEnd

End Sub</SCRIPT>
  當有一個會話發生時(用戶瀏覽網頁,向Web服務器發出請求)那麼,如果自服務器啓動後第一個用戶的話,就會同時發生Application_OnStard和Session_OnStart這兩個事件,之後,再有別的用戶發出請求的話,就只發生Session_OnStart這個事件,而session的生存期是多長,是可以設定的,Session.timeout=X(分鐘)

  好了,有了這個很好用的方法,我們就能準確地統計出在線人數了,而人數總計是用一個application變量來保存,當在第一個會話開始時,在Application_OnStard事件中放置一條清空計數器的語句application("online")=0,然後,在Session_OnStart事件中,放置一條增加在線人數的語句application("online")=application("online")+1,而在Session_OnEnd事件相應地放一條減少在線人數的語句,令計數值減一。
這樣,這個文件就改爲如下

<SCRIPT LANGUAGE="VBScript" RUNAT="Server">

Sub Session_OnStart

application("online")=application("online")+1

End Sub

Sub Session_OnEnd

application("online")=application("online")-1

End Sub

sub Application_OnStard

application("online")=0

End Sub

sub Application_OnEnd

application("online")=0

End Sub</SCRIPT>
  接下來編一個顯示圖形數字的程序,把在線人數顯示在指定的頁面上。這樣就能得出在人數了

*online.asp

<% @language="vbscript" %>
<%
tmp=application("online")
tmp=Cstr(tmp)
dim disp(20)
dim images(20)
dbbits=len(tmp)
for I= 1 to dbbits
disp(I)=left(right(tmp,I),I-(I-1))
next

for I=dbbits to 1 step -1
images(I)="<img src="&"http://xxxx.com.cn/pic"&"/"&disp(I)&".gif>"

response.write "document.write("&images(I)&");"

next

%>
  上面的程序很簡單,這裏不作分析了,請大家自己閱讀一下。在調用在線統計的頁面上用一句script語句引用online.asp文件,以顯示圖形統計器。

<script language="JavaScript" src="http://xxxx.com.cn/online.asp"></script>
  現在可以了,記住要點,你必須把gobal.asa放在正確的web應用程序根目錄上,而最好單獨爲這個統計新建一個web應用程序,不要與其它別的程序混亂了,不然得出的數據是不準確的,而把這個程序修改爲多用戶的在線統計也很簡單。這樣就可以提供在線統計服務了,如何實現請又大家去思考一下吧....
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章