ASP統計用戶在線時間

如果你自己對ASP還算熟悉的話,我可以給你講一個不用Ajax的思路,但是考慮的服務器的負載,統計的精度不能太高,不然會增加服務器的負載:

在你在數據庫裏用一個叫time的字段來存儲累計時間;
在用戶登錄成功後的第一個頁面定義一個session("time1")=now()來表示用戶的登錄時間;

新建一個頁面refresh.asp,這個頁面是用來實時上傳當前時間的,頁面內容爲:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<!--#Include File="../Conn.asp"-->
<%
dim timers,timestr,time_now
time_now=now()
timestr="select * from [你的表] where username='"&session("username")&"'"

set timers=server.CreateObject("adodb.recordset")
timers.open timestr,kaConn,1,3
timers("time")=timers("time")+datediff("s",session("time1"),time_now)
'累計時間timers("time")=原有時間+(當前時間 - 初始時間),datediff()是一個計算時間差值的函數,第一個參數是設置差值的單位,"s"表示差值單位爲秒,第二個參數是時間1,第三個參數是時間2,差值爲時間2減時間1;
timers.update
timers.close
set timers=nothing
kaConn.close
set kaConn=nothing
session("time1")=now() '從新設置初始時間爲當前時間,爲下一次計算作準備
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<meta http-equiv="refresh" content="60"> (這裏是設置頁面刷新時間間隔的,也就是確定你的統計精度,這裏60的意思是60秒鐘刷新一次,也就是上傳一次數據)
<title>refresh</title>
</head>

<body>
</body>
</html>


上面的refresh.asp不是單獨使用的而是作爲一個框架窗口嵌入到用戶登錄後的所有需要統計時間的頁面中,不過你可以設置這個框架的大小爲0x0,這樣用戶是看不到這窗口的,但是這個隱藏的refresh.asp頁面卻在不段的更新着用戶的累計在線時間。因爲這個隱藏頁面每60秒就刷新一次,就會執行上面的程序來更新數據庫,但是主頁面是看不到刷新的。
下面這個是用來插入隱藏頁面的代碼,寫在需要統計時間的頁面的底部吧
<iframe src="refresh.asp" name="refresh" width="0" height="0" allowtransparency="true" scrolling="no" frameborder="0">

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