Plánované spouštění ASP kódu

5. května 2000

Potřebujete plánovaně spouštět ASP kód? A nevíte jak na to? Nevadí. Po přečtení tohoto článku budete vědět, jak snadno a rychle udělat plánované spouštění ASP kódu pomocí global.asa. Není to nic těžkého.

Pokud potřebujete spouštět automaticky ASP kód máte dvě možnosti.

Mnohé z vás pravděpodobně napadne řešení, které je na první pohled nejjednodušší. Toto velmi jednoduché řešení má ale své „mouchy“. Realizace tohoto řešení spočívá ve vytvoření WWW stánky s ASP kódem (soubor *.asp) a zajištění opětovného načítaní této stránky.

Pro zajištění pravidelného načítání WWW stránky s ASP kódem se přímo nabízejí dvě možnosti

  • do stránky umístit META tag pro refresh stránky a stránku otevřít v browseru a nechat okno browseru otevřené pomocí libovolného plánovače úloh
  • zajistit spuštení browseru, který příslušnou stránku natáhne a po dokončení činnosti ASP kódu browser zavřít.

    Obě tyto metody mají přes svou jednoduchost realizace jednu velkou nevýhodu a to sice, že pro svoji činnost potřebují spouštěcí mechanismus, který je umístěn na jiném počítači.

    Existuje sice možnost umístit spouštěcí mechanismus přímo na web server, ale to je možné pouze v případě, že provozujete web na svém vlastním serveru. V případě, že máte pro svůj web pronajatý prostor na webhostingovém server je toto řešení naprosto nemyslitelné, protože žádný provozovatel webhostingu vám toto zcela určitě nepovolí.

    Uvedu vám ale řešení, které nepotřebuje speciální spouštěcí mechanismus a je umístěno přímo na serveru. Řešení je ukryto v souboru global.asa. Tento soubor obsahuje čtyři procedury, které jsou určeny pro zpracování událostí na webu. Procedury se jmenují Application_OnStart, Application_OnEnd, Session_OnStart, Session_OnEnd. Význam a použití těchto procedur je popsán v článku „K čemu slouží global.asa?„.

    Na příkladu si ukážeme jak lze jednoduše spouštět ASP kód při každé sté návštěvě webu. K vlastní realizaci použijeme procedury Application_OnStart a Session_OnStart.

    V proceduře Application_OnStart si zinicializujeme proměnnou typu Application s počtem přístupů a nazveme ji například „pristup“

    Sub Application_OnStart
       Application(„pristup“)=0
    End Sub

    V proceduře Session_OnStart zajistíme inkremenataci proměnné „přístup“ a v případě dosažení požadavaného počtu přístupů (v našem případě 100) bude splněna podmínka a dojde k vykonání ASP kódu.

    Sub Session_OnStart
       Application.lock
       Application(„pristup“)=Application(„pristup“)+1
       Application.unlock
       If Application(„pocet“)>100 then
          Application.lock
          Application(„pristup“)=0
          Application.unlock
          ‚ Zde vložíte svůj ASP kód, který se má vykonat
       End if
    End Sub

    Pokud potřebujete spouštět ASP kód po uplynutí určitého časového období a netrváte přesně na časovém úseku (stačí Vám, když se kód spustí při první návštěvě po uplynutí časového úseku) je tu také velmi jednoduché řešení jak toto zrealizovat opět s použitím global.asa. V proceduře Application_OnStart si zinicializujeme proměnnou typu Application, ve které budeme uchovávat čas posledního provedení ASP kódu a nazveme ji například „cas“:

    Sub Session_OnStart
       If DateDiff(„h“,Application(„cas“),now)>1 then
          Application.lock
          Application(„cas“)=now
          Application.unlock
          ‚ Zde vložíte svůj ASP kód, který se má vykonat
       End if
    End Sub

    Pomocí Session_OnStart je ASP kód proveden pokud od posledního provedení ASP kódu uplynula doba větší než je uvedena v podmínce. Toto řešení má, ale jednu nevýhodu, a to sice, že čas poslední spuštění je po restartu opět nastaven na 0.

    Tuto nevýhodu odstraníme tak, že si čas posledního spuštění budeme v proceduře Session_OnStart ukládat do souboru a v proceduře Application_OnStart si ho zpětně načteme.

    Upravená procedura Application_OnStart pak vypadá následovně:

    Sub Application_OnStart
       dim FS,soubor
       Set FS=Server.createobject(„Scripting.FileSystemObject“)
       Set soubor=FS.OpenTextFile(Server.mappath(„cas.txt“))
       Application(„cas“)=soubor.readline()
       soubor.close
       set soubor=nothing
       set FS=nothing
    End Sub

    Ješte zbývá upravit proceduru Session_OnStart

    Sub Application_OnStart
       dim FS,soubor
       Set FS=Server.createobject(„Scripting.FileSystemObject“)
       Set soubor=FS.OpenTextFile(Server.mappath(„cas.txt“))
       Application(„cas“)=soubor.readline()
       soubor.close
       set soubor=nothing
       set FS=nothing
    End Sub

    a úprava je hotova.

    Na závěr několik rad při psaní kódu do global.asa.

  • Kód si nejdříve otestujte v samostatném ASP souboru.
  • Ošetřete veškeré možné chybové stavy pomocí On Error Resume Next, neboť jakákoliv chyba byť sebemenší v global.asa způsobí nefunkčnost a nepřístupnost cele ASP aplikace.
  • Pokud potřebujete vědět stav provedení kódu v global.asa vytvořte si ASP stránku, kde si pomocí Response.write zobrazíte proměnnou ve které máte uloženy informace o provedení ASP kódu. Například Response.write(Application(„cas“)).

    Starší komentáře ke článku

    Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.

  • Štítky: Články

    Mohlo by vás také zajímat

    Nejnovější

    Napsat komentář

    Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *