因为这些值一直存放在Application中,当运行“每日提示”时,我们就可将它们从TIPSTORE.DAT中取出。作这项工作最佳的方式是利用GLOBAL.ASA,在Application_OnStart中。GLOBAL.ASA文件可以取出这些值。(知道下面这句话怎么译的人请举手!)This is done, courtesy of the FileSystemObject and its support through the TextStreamObject methods:(好,手放下!既然你们都知道了,那我也就不解释了)
PhyPth = Server.MapPath("/tipstore.dat") set FilSys = CreateObject("Scripting.FileSystemObject") set TipFil = FilSys.OpenTextFile(PhyPth, 1) Application("CurTip") = TipFil.ReadLine Application("SymDt") = CDate(TipFil.ReadLine) TipFil.Close set TipFil = nothing set FilSys = nothing
'Tip of the day processing if Application("SymDt") < Date then Application.Lock CurTip = Application("CurTip") + 1 SymDt = date Application("CurTip") = CurTip Application("SymDt") = SymDt Application.Unlock
PhyPth = Server.MapPath("/tipstore.dat") set FilSys = CreateObject("Scripting.FileSystemObject") set TipFil = FilSys.CreateTextFile(PhyPth, true) TipFil.WriteLine(CurTip) TipFil.WriteLine(CStr(SymDt)) TipFil.Close set TipFil = nothing set FilSys = nothing end if
%> ... 直到最后,我们检查当前的提示是否比上一个提示更新。如果第一个用户访问这个导致新数据的页面,我们就很容易来处理这种变化。(明白乎?反正蜘蛛精是搞蒙了。我发觉翻译技术资料最头痛的并不是技术内容,而是如何去领会作者的意思。鄙人生性愚钝,才疏学浅,直觉亦不甚敏锐,只有把这些内容留给网友了。原文请见英文版)。锁住Application,我们就不会取到重复的变化。选择下一个提示的编号,把当前的编号存入数据中以备明天使用。由于上述的诸多原因,将处理的结果存入文档是必要的。(除非你是玩MUD,或与网络情人进行生死恋。可以“24 hours a day, 7 days a week”地开着机器)
set rstTip = CreateObject("ADODB.Recordset") rstTip.Open "SELECT * FROM Tip WHERE Tip=" & TipNbr, _ "DSN=TipData" %> 我们创建rstTip作为Recordset来访问数据库,这个数据库注册为系统DSN(System DSN)(注册方法就不多说了吧,在控制面板中完成)。 DSN的名称为'TipData'。在记录中,我们关注存于Application中的提示编号。