精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● ASP>>ASP范例>>Global.asa使用范例(在线人数等)

主题:Global.asa使用范例(在线人数等)
发信人: yahao()
整理人: yahao(2000-09-27 00:37:40), 站内信件
【 在 qcrsoft (网痞) 的大作中提到: 】
:   昨天我改动了一下global.asa,加了一段session_onstart,证明
: global.asa是执行的,请看——
: ----------------global.asa-------------------
: <script language="vbscript" runat="server">

: sub application_onstart / application_onEnd
:   . 

  先看一个我的 GLOBAL.ASA 实例:
  --->开始<---
<SCRIPT LANGUAGE=VBScript RUNAT=Server>
'=======================================================================
'# 使用应用程序变量保存在线人数等数据
'=======================================================================
Sub Application_OnStart
    '统计在线人数清零
    Application("ONLINE_USER_COUNTER") = 0
End Sub

Sub Application_OnEnd
    '在线人数清零
    Application("ONLINE_USER_COUNTER") = Nothing
End Sub

Sub Session_OnStart
        Session.Timeout = 30
        '在线人数更新
        iUser = Application("ONLINE_USER_COUNTER")
        Application.Lock
        Application("ONLINE_USER_COUNTER") = iUser + 1
        Application.Unlock
End Sub

Sub Session_OnEnd
        '在线人数更新
        Session.Abandon
        Application.Lock
        Application("ONLINE_USER_COUNTER") = Application("ONLINE_USER_COUNTER")-1
        Application.Unlock
End Sub
</SCRIPT>
  --->结束<---

我如果在MMC里将Webserver停掉然后再开启的话Application_OnStart事件就会触发
在线人数又从1开始了。IIS4的文档中是这么描述Application事件的:

--Quotation--
Application 事件
基于 ASP 的应用程序由在其根目录及其子目录中所有文件组成。应用程序在用户
首次打开应用程序中的某一 Web 页时启动,在服务器关闭时终止。应用程序有两
个事件,即 Application_OnStart 事件和 Application_OnEnd 事件。

用户可以在 Global.asa 文件中为这些事件指定脚本。当应用程序启动时,服务器
在 Global.asa 文件中查找并处理 Application_OnStart 事件脚本。当应用程序
终止时,服务器处理 Application_OnEnd 事件脚本。

Application_OnStart
Application_OnStart 事件在首次创建新的会话(即 Session_OnStart 事件)之
前发生。只有 Application 和 Server 内建对象是可用的。在
Application_OnStart 事件脚本中引用 Session、Request 或 Response 对象将导
致错误。
--End--

也就是说在第一个用户访问页面时触发Application_OnStart事件。GLOBAL.ASA还有
一个特点就是一旦内容发生改变,WEB应用将自动重启,这个你可以在本地进行测试。
如果只是实现网页访问记数的话也可以把记数程序放在首页文件中,就像下面的例子
所使用的,这个统计是放在index.asp中的:

--Quotation--
<%
Sub IncrementCounter()
Set fs = Server.CreateObject("Scripting.FileSystemObject")
counter_file = Server.MapPath("/count/count.txt")
Set txt = fs.OpenTextFile( counter_file )
Application("counter") = txt.ReadLine
txt.Close
Application("counter") = Application("counter") + 1
Set txt = fs.CreateTextFile( counter_file, True )
txt.WriteLine(Application("counter"))
txt.Close
End Sub

Application.Lock
IncrementCounter
Application.UnLock
%>
...
本站访问人数<%=Application("counter")%>
--End--

--
 Mail: [email protected]
 Home: http://yhpost.yeah.net
 --
 你好,我好,大家好。

※ 来源:.网易 BBS bbs.netease.com.[FROM: 202.109.192.6]

[关闭][返回]