Costruire uno scheduling con ASP e Getweb

di Roberto Valentini, in Classic ASP, Misc, E-mail,

Leggendo diversi post sui newsgroup dedicati alla programmazione ASP, ho notato molte richieste su come riuscire a rendere automatica l'esecuzione di certe procedure.
Il seguente script, in pratica, permette di eseguire a distanza di tempo regolare, una o più procedure su un sito web senza utilizzare programmi residenti sul server, come lo scheduler.

Per farlo utilizzero un servizio gratuito, disponibile già da diversi anni, che potrei definire una sorta di server web-mail. Si tratta di un host remoto gestito da una organizzazione senza scopo di lucro che ha come intento principale quello di divulgare informazioni a carattere medico sanitario a chiunque non ha pieno accesso ad internet, ma solamente alla posta elettronica.

Utilizzeremo il global.asa, con CDONTS, inserendo nella Session_OnEnd un codice in grado di inviare un'e-mail all'host remoto (chiamato Getweb) indicando l'indirizzo completo della pagina ASP che si vuole eseguire.
In questo modo riceveremo alla casella mail@provider.it il contenuto, già processato dal nostro server, di pagina.asp in formato testo.
Naturalmente pagina.asp potrà fare qualsiasi cosa: scrivere e o leggere su file, inviare email, interrogare database eccetera.

Per attivare il sistema basta inviare un unico messaggio, questa volta manualmente, a getweb@usa.healthnet.org con nel corpo l'indirizzo completo della pagina desiderata.
Attenzione all'uso di programmi client che formattano il contenuto del testo: getweb non "capisce" spazi e righe saltate ad arte come usa ad esempio Outlook: riceverete in risposta un messaggio di errore.

Per ubbidire al nostro ordine getweb si collegherà al nostro sito e di conseguenza verrà eseguita la routine Session_onStart, che controllerà il numero IP.
Nel caso sia uguale a quello inserito nel codice, allora il timeout di sessione verrà impostato a 360 minuti.

Getweb quindi preleverà la pagina in oggetto e la spedira in formato testo a mail@provider.it.
Dopo 360 minuti, con l'escuzione di Session_OnEnd verrà inviato un nuovo messaggio di richiesta a getweb, e così via.

<SCRIPT LANGUAGE="VBScript" RUNAT="Server">

Sub Session_OnStart()

  if Request.ServerVariables("REMOTE_ADDR")="198.115.132.1" then
    Session.Timeout=360
    Session("IP")=Request.ServerVariables("REMOTE_ADDR")
  end if

End Sub

Sub Session_OnEnd()

  if Session("IP")="198.115.132.1" then
    Set InviaMail = Server.CreateObject("CDONTS.NewMail")
    InviaMail.From = "mail@provider.it"
    InviaMail.To = "getweb@usa.healthnet.org"
    InviaMail.Subject = ""
    InviaMail.Body = "get http://www.sito.boh/pagina.asp"
     InviaMail.Send()
    Set InviaMail = Nothing
  end if

End Sub

</SCRIPT>

Questa specie di loop di messaggi terminerà solo nei seguenti casi:
1) cancellando il file global.asa
2) stoppando il server web
3) nel caso getweb si fermi (eventualità piuttosto rara).

Il codice in session_onend deve essere posto obbligatoriamente nel global.asa se si vuole tenere "in vita" il sistema, mentre quello in session_onstart puo anche essere inserito direttamente all'inizio della pagina che viene richiesta.

Per avere informazioni dettagliate su come utilizzare getweb, inviare una mail con nel body HELP.
Non penso ci siano limiti numerici nella richiesta di pagine e non è richiesta nessuna registrazione, in ogni caso consiglio un utilizzo moderato del sistema, considerata la sua gratuità.

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

Nessuna risorsa collegata

I più letti di oggi