31. maj 2004 - 11:19Der er
23 kommentarer og 2 løsninger
Sessions "keep alive"
Hejsa Jeg har en side hvorpå jeg bruge mange "session" til at holde styr på forskellige ting - bladt andet login.
Men den udbyder jeg har "dræber" session efter kun ca. 5 min. Det giver mig en del problemer.
Kan jeg lave et eller andet smart der holder mine session i live indtil brugeren selv vælger at "dræbe" dem? Jeg har tænk på at lave en IFrame der så hvert 4 min reloader sig selv og på den måde opdaterer tidsstemplet på mine sessions. Men er det er god ide? Eller hvad ville I gøre?
jeg ville gøre det samme som du foreslår: en Iframe med et dokument der via f.eks. meta refresh indlæser sig selv hver 4. minut. Det burde fungere udemærket.
cpccorp >> det er da total unødvendigt at lægge den på alle sider - læg den i global.asa og det er en gang for alle.
iframen som krogstrup forslår er det nok mest stabile - så den ville jeg også foreslå. Samtidig med det så læg en session.timeout i din global.asa fil - så har du gjort alt hvad du kan
ja, men den her jeg jo ikke ændret på: -------------- Sub Session_OnStart ' Forøger antallet af brugere med 1, når en session startes Application.Lock Application("ActiveUsers") = Application("ActiveUsers") + 1 Application.UnLock End Sub ------------------- Sub Session_OnEnd ' Reducer antallet af brugere med 1, når en session afsluttes Application.Lock Application("ActiveUsers") = Application("ActiveUsers") - 1 Application.UnLock End Sub
Ja, men det vil bare give en ret uheldig virkning på min statistik da antallet af sidevisninger vil stige en hel del... Men jeg kan selvfølgelig bare trække antallet af visninger på KeepAlive siden fra... Men det er lidt noget bøvl
De skriver i dit spørgsmål at en session skal leve indtil brugeren selv vælger at stoppe den - altså må man regne med at en bruger regnes som besøgende på siden i minimum 30 minutter (da det jo er det session.timeout er sat til) medmindre alle brugere husker at logge sig korrekt ud.
Logger alle brugere sig korrekt ud (og selvfølgelig hvis det er kodet rigtigt) ja så vil "activeusers" jo automatisk gå en ned og dermed altid vise det rigtige til.
Det er næppe alle der husker at logge sig ud og derfor vil du alt andet lige komme til at få et højere "activeusers"-tal end hvad der reelt er af besøgende på siden - men det må man acceptere når man vælger en så høj timeout.
Hvis jeg bruger en IFrame, kan jeg jo selv bestemme hvilke session jeg vil holde i live - bruger jeg session.timeout så gælder rammer jeg også de brugerer som ikke logger ind - det er kun ca. 25 % af siden hvor login er nødvendig
selv bestemme hvilke session der holdes i live? ja, hvis iframen kun er aktiv når man er logget ind, for ellers vil den automatisk refreshe alle de sessions en given bruger har
Jeg har lavet denne løsning. Jeg har slettet session.timeout og i stedet lavet nogle JS funktioner som efter 4 min og 30 sek kalder en IFRAME der opfrisker mine sessions - det sker 3 gange - og har brugeren fortsat ikke rørt på sig kalder jeg en funktion som logger ham ud og giver ham en alert herom. Hver gang brugeren åbner en side begynder keepalive funktionen forfra.
Så efter ca. 13 minutter inaktivitet får han en alert og bliver logget af
Hvis andre skal bruge noget ligende, eller hvis i kan se en bedre løsning så er koden her. ---------------------- <SCRIPT LANGUAGE="JavaScript"> function keepalive() { timerID=setTimeout('keepalive2()',250000); } function keepalive2() { document.frames.KeepAlive.location.href='keepAlive.asp'; timerID=setTimeout('keepalive3()',250000); } function keepalive3() { document.frames.KeepAlive.location.href='keepAlive.asp'; timerID=setTimeout('keepalive4()',250000); } function keepalive4() { document.frames.KeepAlive.location.href='keepAliveAlert.asp'; } </Script> ------------------------ Grunden til at jeg kalder keepalive2() og keepalive3() som har samme funktionalitet som keepalive() er at jeg skal nå at forny mine sessions inden serveren "dræber" dem, hvilket den gør hvert 5 min. I keepAlive.asp opfrisker jeg mine sessions.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.