|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
无法实现跨操作系统的应用。当然这也是微软的理由之一,只有这样才能发挥ASP最佳的能力。可是我却认为正是Windows限制了ASP,ASP的概念本就是为一个能让系统运行于一个大的多样化环境而设计的;固然一般利用的点击注册手艺能够盘算出你的Web站点失掉几点击,可是,假如可以晓得会见者在站点上停止了多长工夫就更好了。假如有上千人点击并翻开了你的主页,但他们却在大度的“接待”图形完整下载之前就已跑到其余站点
往了,如许,你所花在建立和保护站点上的投资就没有失掉很好的报答。
有两种很好的办法用来纪录用户在你的站点上消费了几工夫。第一个是利用基于ASP服务器的sessions,第二是经由过程坚持客户机端cookies。要记着,利用sessions将给服务器的处置事情增添负荷,可是它们的确供应了最简便的办法。另有一点要注重,那就是假如用户真个扫瞄器不克不及撑持cookie功效,那末这两种办法都不克不及事情。
ASPSession手艺
利用ASPSession是请求你把这个session入手下手确当前工夫保留成谁人用户的session级别变量,这将要用到你的站点或假造路径下的global.asa文件中的Session_onStart事务句柄。然后,在Session_onEnd事务句柄中,你就能够盘算出session延续的工夫,并将这个了局写到日记文件或数据库中。在这里的例子中利用了日记文件:
<scriptlanguage="VBScript"runat="server">
SubSession_onStart()
savethetimethatthesessionstarted
Session("StartTime")=Now()
EndSub
SubSession_onEnd()
getthetimethattheuserlastloadedapage
assumesthedefaultsessiontimeoutof20minutes
OnErrorResumeNext
setpathandnameoflogfiletobecreated
edittosuityourownmachinedirectorylayout
remembertogivethedirectoryWriteorFull
ControlpermissionfortheIUSR_machineaccount
strFileName="C:Tempvisit_lengths.txt"
datStartTime=Session("StartTime")
datEndTime=DateAdd("n",-20,Now())
intMinutes=DateDiff("n",datStartTime,datEndTime)
IfintMinutes>0Then
gotavalidtimesoaddittothelogfile
strInfo="Visitendingat"&datEndTime_
&"lastedfor"&intMinutes&"minute(s)."
addusernametothelogentrystringhereifrequired
strInfo=strInfo&"Username:"&strUserName
SetobjFileObject=Server.CreateObject("Scripting.FileSystemObject")
opentextfiletoappenddata(theForAppendingconstant=8)
SetobjFile=objFileObject.OpenTextFile(strFileName,8,True)
objFile.WriteLinestrInfo
objFile.Close
EndIf
EndSub
</script>
你能够看到,当session停止时,我们从以后工夫中减往了session的timeout的数值,假如思索到用户装载最初一页时所消费的工夫,减往的值能够略微小一点。这个数目由你往猜,由于用这个手艺其实不能测出实践值。
注重,假如你在任何页面中利用了ASP的Session.Abandon办法,就不克不及失掉准确的了局。由于这类办法当即中止session,如许,从实践工夫中减往session长度就会给出一个不准确的会见工夫(偶然候乃至是正数)。更糟的是,在ASP2.0版本中,这类办法还常常完全不克不及启动Session_OnEnd事务。
在某些站点上利用一种“中断服务器操纵”的链接来启动Session.Abandon办法,可是依据履历,很少有效户会往点击它。他们只是转到另外一个站点,让session自行中止。
这是我们从日记文件中失掉的一些纪录:
Visitendingat6/5/001:05:26AMlastedfor2minute(s).
Visitendingat6/5/001:06:14AMlastedfor47minute(s).
Visitendingat6/5/001:12:18AMlastedfor22minute(s).
Visitendingat6/5/001:29:54AMlastedfor9minute(s).
假如用户会见的工夫少于1分钟(好比说,他们的session入手下手后过了1分钟还没能装载另外一页),用我们的代码就不显现在列表中。从全部session长度中减往这个session的timeout,就会失掉0,在这一点我们的代码就将其舍弃:
IfintMinutes>0Then?
固然你能够修正代码以顺应本人的必要。
注重:要记着session停止后才入手下手写日记文件的条目。你不克不及立即看到它们。假如想试着更快地看到了局,能够在页面上修正Session.Timeout的属性。
在数据库中纪录了局
要将盘算的了局纪录数据库中而不是日记文件中,能够创立一个得当的SQLINSERT声明,实行它来更新一个你已供应的数据库表:
...
strSQL="INSERTINTOYourTable(UserName,SessionEnd,"_
&"SessionLength)VALUES("&strUserName&",#"_
&datEndTime&"#,"&intMinutes&")"
SetoConn=Server.CreateObject("ADODB.Connection")
oConn.open"DSN=yourdsn;UID=username;PWD=password;"
oConn.ExecutestrSQL
SetoConn=Nothing
...
asp,jsp,php是web开发的三大技术,asp简单易用且有microsoft做靠山,jsp功能强大是因为有java支持,php则开源跨平台.在国内,asp应用范围最广,jsp发展势头最猛,php则处于劣势.这可能与公司的支持以及技术的培训有关. |
|