On Tue, 15 Mar 2005 22:02:40 +0100, "Daniel Overby"
<mailFJERN@overbyhansenFJERN.dk> wrote:
>Ingen af delene - prøv evt. at kigger her:
>
http://dk2.php.net/manual/en/ref.session.php#ini.session.cookie-lifetime.
>Jeg ville mene, det er det, du leder efter.
Som "Frowning" er inde på, så er det rigtigt nok noget rod at få styr
på det, blandt andet på grund af spøjse default-værdier.
session.cookie-lifetime omhandler en udløbstid, når den bliver sendt
til brugeren - altså hvornår brugerens browser bør nulstille denne.
Den er default sat til 0 (dvs. som en session-cookie, der dør, når
browseren lukker). Det er uhensigtsmæssigt at sætte den til noget
kortvarigt, idet der bliver sat et absolut tidspunkt, hvilket kan
skabe problemer, hvis brugerens browsers ur ikke er sat korrekt op.
Derudover er der så session.gc_maxlifetime:
http://dk2.php.net/manual/en/ref.session.php#ini.session.gc-maxlifetime
Den omhandler hvor mange sekunder gammel, en session skal være (dvs.
senest have været læst - eller modificeret på bl.a. FAT-systemet), før
den bliver slettet fra serveren under garbage collection. Den er
default sat til 1440 sekunder, hvilket er 24 minutter. Jeg har en
mistanke om at php-udviklerne selv har troet, at der var tale om
minutter, hvor 1440 minutter så ville tilsvare et døgn.
Dvs. 24 minutters inaktivitet (uden at lukke browseren) kan gøre, at
session'en dør fra serveren. Det kan desværre meget vel forekomme i
praksis for fx websider med ret store og komplicerede formularer, der
tager tid for den besøgende at udfylde.
For at en session virker, er det således nødvendigt, at både browseren
er i besiddelse af cookien/sessionid'et, og at sessionen findes på
serveren. Hvis blot én af disse mangler, vil sessionen ikke eksistere
for brugeren. Det kan altså i et default-setup ske, hvis brugeren
lukker alle sine browservinduer (så forsvinder cookien på brugerens
computer), eller hvis brugeren er passiv i et sted over 24 minutter
(så forsvinder session-dataen på serveren ved garbage collection).
--
- Peter Brodersen