Access + Webのホームへ戻る

Global.asaファイルとは

 

ApplicationオブジェクトとSessionオブジェクトの使い方を説明しましたが、これらのオブジェクトには、表に示すようなイベントがサポートされています。これらのイベントは、Global.asaファイルと呼ばれる特別なファイルに組み込む必要があります。このGlobal.asaファイルは、Webサイトのルートディレクトリに格納します。IISは、新しいユーザーがWebサイトを訪問したとき、Global.asaを探してGlobal.asaに登録されている各種イベントに制御を渡します。

 

表 Application/Sessionオブジェクトでサポートされているイベント

オブジェクト

イベント

意 味

Application

Application_OnStart

このイベントは、Webサイトの最初のSessionが作成されたときにときに発生します。

Application_OnEnd

このイベントは、Webサーバーがシャットダウンされるときに発生します。

Session

Session_OnStart

このイベントは、Webサイトを新しいユーザーが訪問したときに発生します。

Session_OnEnd

このイベントは、SessionがタイムアウトまたはSession.Abandonメソッドを発行したときに発生します。Sessionのタイムアウト時間は、Session.Timeoutで再設定できます。

 

 

Global.asaファイルに各種イベントを登録するには、HTMLファイルにスクリプトを挿入するのと同じ手順でHTML<script>・・・</script>タグ内に挿入します。<script>タグには、language=”vbscript”runat=”server”を指定します。

 

<script language=”vbscript” runat=”server”>

Sub Application_OnStart

・・・

End

Sub Application_OnEnd

・・・

End

</script>

 

 

リスト Global.asaファイルのサンプル

1: '---------------------------------------

 2: ' global.asa 

 3: '---------------------------------------

 4: <script language=”vbscript” runat=”server”>

 5: sub Application_OnStart

 6:   on error resume next

 7:   application("Visitors") = 0

 8:   application("ActiveUsers") = 0

 9: 

10:   application("AppName") = "システム名"

11:   application("AppVersion") = "V1.00"

12:

13:   application("ConnectionString") = "Provider=Microsoft.Jet.OLEDB.4.0;" _

14:     & "Data Source=" & server.MapPath("accweb/accweb.mdb")

15: end sub

16:

17: sub Application_OnEnd

18:   on error resume next

19: end sub

20: 

21: sub Session_OnStart

22:   on error resume next

23:   application.lock

24:   application("Visitors") = application("Visitors") + 1

25:   application("ActiveUsers") = application("ActiveUsers") + 1

26:   application.unlock 

27: end sub

28:

29: sub Session_OnEnd

30:   on error resume next

31:   application.lock

32:   application("ActiveUsers") = application("ActiveUsers") - 1

33:   application.unlock

34: end sub

35: </script>

 

リストのGlobal.asaファイルには、4種類のイベントが登録されています。以下に各イベントの処理について説明します。

 

  Application_OnStartイベントの処理

このイベントは、Webサイトの最初のSessionが作成されたときにときに発生します。このイベントでは、各種Application変数を初期化しています。Application(“Visitors”)には、Webサイトの訪問者数の累計が格納されます。Application(“ActiveUsers”)には、現在Webサイトを訪問しているユーザー数が格納されます。Application(“AppName”)Application(“AppVersion”)には、システム名とバージョン番号が格納されます。

 

Response.Write(“訪問者数累計:” & Application(“Visitors”))

Response.Write(“Active Users:” & Application(“ActiveUsers”))

Response.Write(“システム名:” & Application(“AppName”))

Response.Write(“バージョン番号:” & Application(“AppVersion”))

 

Application(“ConnectionString”)には、”ado.connection”オブジェクトでAccess のデータベースを接続するための引数を保存しています。

 

set cnn = server.CreateObject("adodb.connection")

cnn.open Application(“ConnectionString”)

 

Note

Application変数は、Webサーバーがシャットダウンされると解放されます:

 

Application変数は、Webサーバーがシャットダウンされると解放されます。このため、Application変数に訪問者数の累計を格納する場合、ファイルまたはデータベースに格納する必要があります。たとえば、Access 2000のテーブル(tblLog)LogVisitorsのフィールドをApplication(“Visitors”)で更新するには以下のように記述します。

 

dim cnn, strSQL

const adExecuteNoRecords = &H00000080

 

set cnn = server.CreateObject("adodb.connection")

cnn.open Application("ConnectionString")

strSQL = "Update tblLog Set LogVisitors=" & CStr(Application("Visitors"))  _

  & " Where LogName='Visitors';"

cnn.execute strSQL,,adExecuteNoRecords

cnn.close

set cnn = nothing

 

 

 

  Application_OnEndイベントの処理

このイベントは、Webサーバーがシャットダウンされるときに発生します。このイベントでは、Application変数を明示的に解放するなどの処理を行います。

 

  Session_OnStartイベントの処理

このイベントは、Webサイトを新しいユーザーが訪問したときに発生します。このイベントでは、Application(“Visitors”)Application(“ActiveUsers”)+1して累計を更新しています。Application変数を更新するこきは、他のユーザーと競合しないように、Application.lock/Application.unlockメソッドを使用して排他制御する必要がります。

 

  Session_OnEndイベントの処理

このイベントは、SessionがタイムアウトまたはSession.Abandonメソッドを発行したときに発生します。このイベントでは、Application(“AcriveUsers”)-1して累計を更新しています。Application変数を更新するこきは、他のユーザーと競合しないように、Application.lock/Application.unlockメソッドを使用して排他制御する必要がります。

 


Tip

Global.asaファイルをアプリケーションごとに用意するには:

 

Global.asaファイルは、通常Webサイトのルート(例:“C:\Inetpub\wwwroot”)に格納します。Webサイトに複数のアプリケーションを構築するときは、アプリケーションの仮想ディレクトリを作成してGlobal.asaファイルは、仮想ディレクトリのルートに格納します。

 

Access + Webのホームへ戻る