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
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
I più letti di oggi
- Utilizzare DeepSeek R1 con Azure AI
- Prima preview di Sparkle, il designer grafico di WinFX
- Come popolare una list box estraendo i dati da un database
- Scrivere un file di testo
- Tutorial HTML5
- Utilizzare il metodo IntersectBy per eseguire l'intersection di due liste
- Tutto per portarsi ASP.NET 4.0, Silverlight 4.0 e .NET Framework 4.0 sotto l'ombrellone
- Disponibile il SP1 di Visual Studio 2010 su MSDN, dal 10 marzo per tutti