Avatar billede cardinale Nybegynder
09. juni 2003 - 05:01 Der er 9 kommentarer og
2 løsninger

Tjek af session timeout

Hvordan tjekker man hvad session timeout er - eller hvad det nu hedder.
Altså den tid der går inden serveren lukker en session ned hvis brugeren ikke er aktiv.

Det er en remote server hvor jeg ikke har adgang til php.ini.
Avatar billede human Nybegynder
09. juni 2003 - 05:30 #1
Prøv smid et doc op på serveren hvor du bruegr funktionen phpinfo(); Mener du kan læse det der.
Avatar billede myplacedk Nybegynder
09. juni 2003 - 07:02 #2
Yep, kig efter session.gc_maxlifetime.

Skal du bruge det i et script, så prøv med:
$tid = ini_get('session.gc_maxlifetime');

Husk at sessionen ikke "dør" efter den tid, den bliver kun markeret til "garbage collection". Sig til hvis du vil have det uddybet. :)
Avatar billede cardinale Nybegynder
09. juni 2003 - 12:07 #3
Ok - den er sat til 1440 - det vil sige 1440 sekunder?

myplacedk: Ja tak - det sidste vil jeg gerne have uddybet...
Avatar billede myplacedk Nybegynder
09. juni 2003 - 12:25 #4
Yep, det er i sekunder.

Når tiden er gået, bliver sessionen markeret til garbage collection (gc). Næste gang der foretages gc vil sessionen forsvinde. Indtil da kan den benyttes helt som om den ikke var markeret til gc.

Hver kan PHP startes (dvs. hver gang nogen går ind på en PHP-side) vil der MÅSKE være gc. Det afgøres ved at "kaste en terning". Sandsynligheden for at der køres gc er som standard 1%, men kan indstilles med session.gc_probability (1=1%).

Dvs. på en privat test-server kan en ubrugt session godt ligge i over en uge.

Hvis det er vigtigt at der sker noget når tiden er gået, må man selv implementere det. Det er heldigvis ret simpelt.
Avatar billede cardinale Nybegynder
09. juni 2003 - 12:32 #5
Hvad er forskellen på om der køres eller ikke køres en gc?

//Dvs. på en privat test-server kan en ubrugt session godt ligge i over en uge.//
<-- Kan du uddybe det lidt?
Avatar billede myplacedk Nybegynder
09. juni 2003 - 12:36 #6
Når der køres gc vil sessioner der er markeret til gc blive fjernet.
Hvis der ikke køres gc vil det ikke ske.

Med kun 1% sandsynlighed for gc for hvert request, skal der gennemsnitlig 100 requests til, før der bliver kørt gc. På en privat test-server kan det godt tage lang tid, men på produktions-servere er det ikke noget problem.
Avatar billede cardinale Nybegynder
09. juni 2003 - 13:00 #7
Ok - og så en gang til for prins Knud...

Vil det sige at de 1440 sekunder kun gælder i 1% af tilfældene?
Avatar billede myplacedk Nybegynder
10. juni 2003 - 13:52 #8
Hmm... Ja, det kan man vel godt sige. :)
Men på et typisk webhotel er der nok så mange besøgende, at det højest er få sekunder der er tale om. Man skal bare huske at det ikke er nogen garanti!
Avatar billede learner Praktikant
10. januar 2005 - 13:33 #9
kan man så indstille sessions til at holde længere tid?
Avatar billede myplacedk Nybegynder
13. januar 2005 - 20:59 #10
Ja, det er "session.gc_maxlifetime". Kan sættes i php.ini, .htaccess eller i PHP-scripts.
Avatar billede learner Praktikant
14. januar 2005 - 09:27 #11
jeg har ikke nogen php.ini, er det ik kun hvis man selv hoster?
Jeg bruger B-one.. Men skal jeg så lave en php.ini fil i roden hvor der står session.gc_maxlifetime i? eller kan jeg skrive det direkte i min functions.php, som altid includeres?

PS TAKKER FOR DIN HJÆLP! Du får noget karma for det :o)
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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