Atomur TVProgram Valutaomvandlare BENGANS RADIO - Spotify playlist
  
Till Startsidan
Tips
 
<< Startsidan
 
<% 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) >>

Gå upp!
© Copyright 1998-2009 Patrik Bengtsson.
Cookies på bengan.com