明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

使用global.asa計(jì)劃執(zhí)行程序

[摘要]其實(shí)就是利用文件“global.asa”!許多ASP編程新手都想知道這東西是什么?事實(shí)上,global.asa就是一個(gè)事件驅(qū)動程序,其中共包含4個(gè)事件處理過程: Application_OnStart、Application_OnEnd、Session_OnStart 和 Session_OnEn...
其實(shí)就是利用文件“global.asa”!許多ASP編程新手都想知道這東西是什么?事實(shí)上,global.asa就是一個(gè)事件驅(qū)動程序,其中共包含4個(gè)事件處理過程: Application_OnStart、Application_OnEnd、Session_OnStart 和 Session_OnEnd。  

  當(dāng)網(wǎng)站的一個(gè)應(yīng)用程序的頁面第
一次被用戶訪問時(shí),global.asa就被裝載進(jìn)內(nèi)存。當(dāng)應(yīng)用程序(application )啟動、結(jié)束,或者會話(session)開始、結(jié)束時(shí),你就可以加入需要執(zhí)行的腳本代碼。  

  利用一些技巧,你就可以使用global.asa文件達(dá)到計(jì)劃執(zhí)行任務(wù)的目的。  

  這里有一個(gè)例子:“跟蹤網(wǎng)站有多少訪問者;在訪問量達(dá)到100時(shí),計(jì)數(shù)器復(fù)位到0,并且執(zhí)行你事先編制的代碼”。當(dāng)然,根據(jù)自己的需要,你可以調(diào)整訪問量的上限數(shù)目100。  

  global.asa的內(nèi)容如下:  

< SCRIPT LANGUAGE=VBScript RUNAT=Server >
Sub Application_OnStart
   Application("SessionCount") = 0
End Sub

Sub Session_OnStart
   Application.Lock
   Application("SessionCount") = Application("SessionCount") + 1
   Application.Unlock
   If Application("SessionCount") > 100 Then
      Application.Lock
      Application("SessionCount") = 0
      Application.Unlock
      '' Here you would put any code you need to run
      '' do not surround the code with < % % > tags
      '' For example you might run a database query that checks for expired accounts
   End if
End Sub
< /SCRIPT >  

  下面,讓我們看看一天內(nèi)執(zhí)行4次某任務(wù)的情況。你可以將日期和時(shí)間的值存儲在一個(gè)文本文件中,并且周期性地檢查它。當(dāng)時(shí)間過去6個(gè)小時(shí)時(shí),寫入新的日期與時(shí)間到這個(gè)文本文件中,并且,啟動你想要執(zhí)行的任務(wù)。你可以改變 “6”這個(gè)數(shù)值,從而更多或者更少地執(zhí)行任務(wù)。  

  雖然,上面的方法需要對文本文件設(shè)置讀、寫權(quán)限后才能正確執(zhí)行,但這仍不失為一個(gè)非常聰明的解決方案!  

  在這個(gè)例程中,每有15個(gè)新訪問者時(shí),就檢查文本文件一次。當(dāng)然,你可以調(diào)整“15”的數(shù)值,或者設(shè)定每當(dāng)有新訪問者時(shí),都檢查文本文件一次。但這樣處理,無疑會加重站點(diǎn)的負(fù)載,浪費(fèi)服務(wù)器的資源!總之,檢查的頻度由你自己考慮后設(shè)定。  

  例子中,必須保證初次寫入文本文件的日期與時(shí)間的合法性,否則,當(dāng)程序首次讀入一個(gè)空值時(shí),就會發(fā)生運(yùn)行錯(cuò)誤。  

  比如:將 6/30/99 6:58:45 PM 初始寫入文本文件的第一行。  

  當(dāng)前,也可以加入一些代碼,用來檢查日期與時(shí)間的寫法,并且處理出錯(cuò)信息。但初始寫入一個(gè)合法的日期與時(shí)間數(shù)值,將會更簡單一些。  

  global.asa的內(nèi)容如下:  

< SCRIPT LANGUAGE=VBScript RUNAT=Server >
Sub Application_OnStart
   Application("SessionCount") = 0
End Sub

Sub Session_OnStart
   Application.Lock
   Application("SessionCount") = Application("SessionCount") + 1
   Application.Unlock

   If Application("SessionCount") > 15 Then
      Application.Lock
      Application("SessionCount") = 0
      Application.Unlock
      Set ObjMyFile = CreateObject("Scripting.FileSystemObject")
      Set OpenMyFile = ObjMyFile.OpenTextFile(Server.MapPath("last-update.txt"))
      MyFileValue = OpenMyFile.ReadLine
      OpenMyFile.Close
      If DateDiff("h",MyFileValue,NOW) > 6 Then
         '' Here you would put any code you need to run
         '' do not surround the code with < % % > tags
         '' For example you might run a database query that checks for expired accounts
         Set WriteMyFile = ObjMyFile.CreateTextFile(Server.MapPath("last-update.txt"))
         WriteMyFile.WriteLine(NOW)
         WriteMyFile.Close
      End if  
   End If
End Sub
< /SCRIPT >

  請注意:還有許多更好的方法達(dá)到檢查的目的,這篇文章的目的是想起到拋磚引玉的作用。  

  同時(shí)請記。篧EB站點(diǎn)的應(yīng)用程序一定要設(shè)置為一個(gè)Application,這樣“global.asa”文件才能起作用。許多虛擬域默認(rèn)為Application,但下層的目錄卻不是。  

  最后的一點(diǎn)提示:在將代碼寫入global.asa前,請先寫入一個(gè)“ASP”文件中進(jìn)行測試。如果測試失敗,那么在global.asa中也將不能運(yùn)行成功。同時(shí),確認(rèn)文本文件的路徑是正確的。