|
<% Schemalägg ASP-skript
i Global.asa %>
Ofta
kan det vara praktiskt att schemalägga ett skript som skall
köras på servern vid bestämda tider. Tex. hämtning av
nyheter en gång i timmen eller städning i databasen på
natten.
Men hur löser man detta då? Jo, bästa sättet är
såklart att använda serverns schemaläggare så skriptet
körs helt i bakgrunden på servern. Problemet är bara att
detta kräver installation av extra programvara på servern
och inte många webbhotell är villiga att göra det...
Men hav förtröstan, vi
kan istället använda Global.asa filen och behöver
då inte ens kontakta server admin! Om du inte vet hur
Global.asa fungerar så föreslår jag att du läser på
lite först innan du provar nedanstående skript, man kan
nämligen ställa till med en del problem annars...
Skriptet bygger på kod som
jag hittat hos PowerASP och sedan modifierat.
Det funkar som så att när
en ny session startar så kollas en textfil efter tiden när
senaste körningen gjordes. Om då tidsskillnaden man
ställt in överskridits så körs skriptet och textfilen
uppdateras med nya tiden.
För att inte belasta servern i onödan så finns det även
ett applikations-värde som styr så att textfilen endast
läses var tionde besökare. Ändra det till ett värde som
passar din sida.
Du kan lägga in två olika skripts som skall köras på
olika tider. Bara ändra tidsskillnaden i If satserna. Vill
du köra fler skripts så bara lägg till fler ElseIf satser
och tid angivelser i text-filen.
Kod i Global.asa:
<SCRIPT
LANGUAGE="VBScript" RUNAT="Server">
Sub Application_OnStart
Application("SessionCount") = 0
End Sub
Sub Application_OnEnd
' Behövs inget här
End Sub
Sub Session_OnStart
Session.Timeout = 20
Session("Start") = Now
Application.Lock
Application("SessionCount") = Application("SessionCount") + 1
Application.Unlock
' Kollar när textfilen skall
läsas
If Application("SessionCount") > 9 Then
Application.Lock
Application("SessionCount") = 0
Application.Unlock
Set ObjMyFile = CreateObject("Scripting.FileSystemObject")
Set OpenMyFile = ObjMyFile.OpenTextFile("sökväg\last-update.txt")
Tid1 = OpenMyFile.ReadLine
Tid2 = OpenMyFile.ReadLine
OpenMyFile.Close
Set OpenMyFile = Nothing
' -------- Kollar Tid1 ----------
If DateDiff("h",Tid1,NOW) => 1 Then
' --- Lägg kod1 som skall
köras här ---
' I detta exempel körs koden 1 gång i timmen.
Set WriteMyFile = ObjMyFile.OpenTextFile("sökväg\last-update.txt", 2)
WriteMyFile.WriteLine(NOW)
WriteMyFile.WriteLine(Tid2)
WriteMyFile.Close
Set WriteMyFile = Nothing
' -------- Kollar Tid2 ----------
ElseIf DateDiff("h",Tid2,NOW) => 12 Then
' --- Lägg kod2 som skall
köras här ---
' I detta exempel körs koden 2 gånger om dan.
Set WriteMyFile = ObjMyFile.OpenTextFile("sökväg\last-update.txt", 2)
WriteMyFile.WriteLine(Tid1)
WriteMyFile.WriteLine(NOW)
WriteMyFile.Close
Set WriteMyFile = Nothing
End If
Set ObjMyFile = Nothing
End If
End Sub
Sub Session_OnEnd
' Behövs inget här
End Sub
</SCRIPT> |
OBS! Se till att du
har en textfil kallad last-update.txt med två tider av
typen Now() på var
sin rad innan du ändrar i Global.asa! Kolla också att filen
är skrivbar och ange hela sökvägen till den i skriptet
(alltså typ: C:\Inetpub\wwwroot\osv...).
Tänk också på att tidsskillnaden inte blir exakt utan är
beroende av när nya besökare kommer till din sida.
Schemalägg
2 (direkt på en sida) >>
|