Avatar billede bongii Nybegynder
29. august 2008 - 09:32 Der er 5 kommentarer og
1 løsning

timeout på seperat sessions

Hej.

Kan jeg sætte session("counter") til at time ud efter 5 minutter, mens resten af de sessions jeg bruger timer ud efter default 20 minutter?
Avatar billede softspot Forsker
29. august 2008 - 09:39 #1
Ikke uden du selv håndterer det på en eller anden måde (og så er det vel ikke rigtig en timeout...? :-))...

En metode kunne være at du satte en anden session-variabel som angav hvornår counter var sat og så checkede på det tidspunkt inden counter benyttes.

Eksempel:

session("counter") = "En eller anden værdi"
session("counter_time") = now

når variablen skulle aflæses, skulle du så gøre noget i stil med:

if datediff("n", session("counter_time"), now) < 5 then
  ' så er counter stadig gyldig
  counter = session("counter") & ""
else
  ' så er counter blevet ugyldig
  counter = ""
end if

Det er naturligvis bøvet at gøre det på denne måde hver gang (specielt hvis den skal benyttes mange steder). Du kan dog afbøde det lidt, ved at pakke den ind i en funktion:

function getCachedCounter()
  if datediff("n", session("counter_time"), now) < 5 then
    ' så er counter stadig gyldig
    getCachedCounter = session("counter") & ""
  else
    ' så er counter blevet ugyldig
    getCachedCounter = ""
  end if
end function
Avatar billede softspot Forsker
29. august 2008 - 09:50 #2
En udvidelse af denne "cachefeature" kunne være en mere generisk form:

function getCachedItem(item)
  if datediff("n", session(item & "_time"), now) < session(item & "_timeout") then
    ' så er "item" stadig gyldig
    getCachedItem = session(item) & ""
  else
    ' så er "item" blevet ugyldig
    getCachedItem = ""
  end if
end function

sub setCachedItem(item,value,timeout)
  session(item) = value
  session(item & "_time") = now
  session(item & "_timeout") = timeout
end sub

Så skal du bare angive hvilken værdi og antallet af minutter inden den timer ud:

setCachedItem "counter", "En eller anden værdi", 5

og hente den således:

counter = getCachedItem("counter")
Avatar billede bongii Nybegynder
29. august 2008 - 10:26 #3
ahh smart. Takker soft.
Avatar billede softspot Forsker
29. august 2008 - 10:33 #4
Velbekomme :-)
Avatar billede bongii Nybegynder
29. august 2008 - 11:04 #5
:)
Avatar billede softspot Forsker
29. august 2008 - 11:14 #6
Tak for point :)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester