Domanda

Ho un Classic ASP sito, che richiede un po ' di tabelle di database per essere svuotato i dati della sessione in base a una pianificazione.Questo sistema non ha accesso alle attività programmate (che è condivisa web host, e l'utilizzo di MySQL server)

Stavo pensando di usare il global.asa, a fuoco spento eventi come tale:

  1. Application_OnStart - cancellare tutti i dati della sessione dal database
  2. Application_OnEnd - elimina tutti i dati di sessione
  3. Session_OnStart - creare un utente " sessione
  4. Session_OnEnd - cancellare tutti i dati della sessione, che si riferisce a questa sessione.

C'è qualche motivo per cui non dovrebbe creare connessioni di database, in global.asa?Questi saranno creati e distrutti qui, non condivisa in sessione o ambito di applicazione.Io la vedo come un modo di esecuzione di questi compiti di amministrazione due volte per utente (sessione di inizio e di fine) e di non essere stato licenziato di nuovo per loro pari a poco database di traffico.

Qualcuno ha idee su come questo può essere un male?Motivi di non connettersi a un database in global.asa?

Se qualcuno pensa che il sopra idea è cattiva - hai altri pensieri come posso regolarmente svuotare queste tabelle, senza che uno o più di:

  1. Attività pianificata
  2. Database operazione pianificata
  3. L'esecuzione del codice al caricamento di una pagina per ogni pagina (da qui il Session_OnStart ganci)

Ta'

Senior Cocco

È stato utile?

Soluzione

Mi piacerebbe fare pulizia per singola sessione in Session_OnEnd e per TUTTE le sessioni Application_OnStart.Se il vostro all-sessioni-di pulitura è lento, si può fare una cosa brutta e ' di pulizia in un separato asp-file che si effettua una richiesta http all'utilizzo XMLHTTP classe, ricordate di non attendere il completamento della richiesta in quanto non cominciano a essere serviti prima di tutto il codice in Application_OnStart è in esecuzione.

Altri suggerimenti

Si potrebbe scrivere una pagina web che svuota la sessione di tabelle, e chiamare la pagina da un box esterno tramite un'attività pianificata.

Dipende da quanto tempo la vostra attività di pulizia avrà.Dal momento che nessuna richiesta sarà servita mentre Application_Start è in esecuzione, si può bloccare per un po'.

Inoltre, si ha nessuna garanzia che Application_End (o Session_End) verrà chiamato in tutti i casi (quando il server è spento non può essere licenziato, o qualche guasto catastrofico può ignorare questi eventi interamente).

Modo migliore sarebbe, come suggerisci tu, per eseguire un'operazione pianificata in carica di pulizia raffermo dati di sessione.

Se si dispone di traffico consistenti si può sfruttare le attività di piccole dimensioni, al termine di una richiesta di un ciclo.Basta digitare una risposta.a filo e quindi eseguire la query al db.Naturalmente, è necessario scrivere youre propria utilità di pianificazione.Un'altra opzione è quella di creare un separato file asp (tasklet) che si esegue il ping di utilizzo di un serverside, async, xmlhttpreq all'inizio della richiesta.Questo mantiene il codice di pulitura di richiesta dei clienti e ciclo e riduce i tempi di latenza.

In realtà ho woudn non stupitevi se non c'è già qualche intelligente appengine base webappr/api che è possibile eseguire il ping youre legacy tasklet/webhooks pianificazione.E se non c'è, si potrebbe scrivere uno youre auto, le opzioni sono infinite :)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top