利用global.asa計(jì)劃執(zhí)行程序
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
其實(shí)就是利用文件“global.asa”!asp編程新手都想知道這東西是什么?事實(shí)上,global.asa就是一個(gè)事件驅(qū)動(dòng)程序,其中共包含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 )啟動(dòng)、結(jié)束,或者會(huì)話(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í)間的值存儲(chǔ)在一個(gè)文本文件中,并且周期性地檢查它。當(dāng)時(shí)間過去6個(gè)小時(shí)時(shí),寫入新的日期與時(shí)間到這個(gè)文本文件中,并且,啟動(dòng)你想要執(zhí)行的任務(wù)。你可以改變 “6”這個(gè)數(shù)值,從而更多或者更少地執(zhí)行任務(wù)。 雖然,上面的方法需要對(duì)文本文件設(shè)置讀、寫權(quán)限后才能正確執(zhí)行,但這仍不失為一個(gè)非常聰明的解決方案! 在這個(gè)例程中,每有15個(gè)新訪問者時(shí),就檢查文本文件一次。當(dāng)然,你可以調(diào)整“15”的數(shù)值,或者設(shè)定每當(dāng)有新訪問者時(shí),都檢查文本文件一次。但這樣處理,無疑會(huì)加重站點(diǎn)的負(fù)載,浪費(fèi)服務(wù)器的資源!總之,檢查的頻度由你自己考慮后設(shè)定。 例子中,必須保證初次寫入文本文件的日期與時(shí)間的合法性,否則,當(dāng)程序首次讀入一個(gè)空值時(shí),就會(huì)發(fā)生運(yùn)行錯(cuò)誤。 比如:將 6/30/99 6:58:45 PM 初始寫入文本文件的第一行。 當(dāng)前,也可以加入一些代碼,用來檢查日期與時(shí)間的寫法,并且處理出錯(cuò)信息。但初始寫入一個(gè)合法的日期與時(shí)間數(shù)值,將會(huì)更簡單一些。 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 > 請(qǐng)注意:還有許多更好的方法達(dá)到檢查的目的,這篇文章的目的是想起到拋磚引玉的作用。 同時(shí)請(qǐng)記?。篧EB站點(diǎn)的應(yīng)用程序一定要設(shè)置為一個(gè)Application,這樣“global.asa”文件才能起作用。許多虛擬域默認(rèn)為Application,但下層的目錄卻不是。 最后的一點(diǎn)提示:在將代碼寫入global.asa前,請(qǐng)先寫入一個(gè)“ASP”文件中進(jìn)行測試。如果測試失敗,那么在global.asa中也將不能運(yùn)行成功。同時(shí),確認(rèn)文本文件的路徑是正確的。
該文章在 2011/4/23 23:01:51 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |