/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Session expiration?
Fra : Frowning Freezer


Dato : 15-03-05 13:41

Hejsa

Hvordan er det nu lige at man stiller hvornår en session udløber
(altså ikke en permanent cookie)? Selvfølgelig udløber den når
browseren lukkes (alt andet lige), men den kan også udløbe før den
tid.

Er det session.cache_expire eller session.gc_maxlifetime der er årsag
til det? Jeg synes ikke rigtig manualen forklarer disse begreber
særlig godt, så jeg håber der er en der lige kan forklare det helt
præcist hvad der er hvad, og hvornår det skal bruges.


 
 
Daniel Overby (15-03-2005)
Kommentar
Fra : Daniel Overby


Dato : 15-03-05 22:03

> Er det session.cache_expire eller session.gc_maxlifetime der er årsag
> til det? Jeg synes ikke rigtig manualen forklarer disse begreber
> særlig godt, så jeg håber der er en der lige kan forklare det helt
> præcist hvad der er hvad, og hvornår det skal bruges.

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.

- Daniel



Peter Brodersen (16-03-2005)
Kommentar
Fra : Peter Brodersen


Dato : 16-03-05 09:20

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

Mads Sülau Jørgensen (16-03-2005)
Kommentar
Fra : Mads Sülau Jørgensen


Dato : 16-03-05 09:50

Peter Brodersen wrote:

[...]

> 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).

Nu du snakker om garbage collection er det nok værd at nævne at denne
som standard bliver kørt med en %1 sandsynlighed.

Det er hhv. session.gc_probability og session.gc_divisor der bestemmer
over hvor stor sandsynligheden er for at garbage collectoren kører.
Derfor hvis man har en server hvor der er meget få forespørgseler skulle
jeg mene at det er muligt at en session findes i noget længere tid.

--
Mads Sülau Jørgensen
"All glory to the hypno toad!"

Frowning Freezer (16-03-2005)
Kommentar
Fra : Frowning Freezer


Dato : 16-03-05 12:55

>Nu du snakker om garbage collection er det nok værd at nævne at denne
>som standard bliver kørt med en %1 sandsynlighed.
>
>Det er hhv. session.gc_probability og session.gc_divisor der bestemmer
>over hvor stor sandsynligheden er for at garbage collectoren kører.
>Derfor hvis man har en server hvor der er meget få forespørgseler skulle
>jeg mene at det er muligt at en session findes i noget længere tid.

Ja sådan har jeg også forstået det - men jeg synes det er en mærkelig
måde at gøre det på. Hvorfor er det ikke lavet sådan at PHP bare
tjekker alderen hver gang inden den bruger sessionen?! Kræver det
virkelig så mange ressourcer at gøre det?

(det er selvfølgelig i bund og grund et spørgsmål til udviklerne, men
det kan være der er nogen her der har en forklaring...)


Christian Joergensen (17-03-2005)
Kommentar
Fra : Christian Joergensen


Dato : 17-03-05 00:23

Frowning Freezer <pub1@hverdag.dk> writes:

> Ja sådan har jeg også forstået det - men jeg synes det er en mærkelig
> måde at gøre det på. Hvorfor er det ikke lavet sådan at PHP bare
> tjekker alderen hver gang inden den bruger sessionen?! Kræver det
> virkelig så mange ressourcer at gøre det?

Hvornaar ved du saa at du kan slette den? :)

--
Christian Jørgensen | Pity the poor egg: it only gets laid once.
http://www.razor.dk |

Frowning Freezer (17-03-2005)
Kommentar
Fra : Frowning Freezer


Dato : 17-03-05 12:29

>> Ja sådan har jeg også forstået det - men jeg synes det er en mærkelig
>> måde at gøre det på. Hvorfor er det ikke lavet sådan at PHP bare
>> tjekker alderen hver gang inden den bruger sessionen?! Kræver det
>> virkelig så mange ressourcer at gøre det?
>
>Hvornaar ved du saa at du kan slette den? :)

Øhhhh - når den er over en vis alder angivet i ini... Er det ikke
indlysende?


Geert Lund (17-03-2005)
Kommentar
Fra : Geert Lund


Dato : 17-03-05 16:08

Frowning Freezer wrote:

>>Hvornaar ved du saa at du kan slette den? :)

> Øhhhh - når den er over en vis alder angivet i ini... Er det ikke
> indlysende?

Pointen med Garbage Collection systemet i PHP er så vidt jeg husker det
at spare på systemressourcerne. Forestil dig hvad der ville ske på et
system med 500 sessions der skulle checkes for udløb hver gang en side
bliver requestet.

Ergo skulle der checkes 500 sessions i filsystemet inden du kunne få
udlæst din PHP side. Det ville ikke kun tage CPU og diskaccess tid fra
maskinen men også gøre alle sider unødigt langsomme til at loade.

(Husk på - garbage collections primære opgave - er at rydde op i alle
døde sessions - egentlig ikke "din egen")

--
Med venlig hilsen
Geert Lund


Frowning Freezer (16-03-2005)
Kommentar
Fra : Frowning Freezer


Dato : 16-03-05 12:52

Godt, det var også noget af det jeg selv forestillede mig, men pga. af
dårlig dokumentation og de mærkelige 1440 sek. blev jeg lidt forvirret
og måtte lige have en andens forståelse af det. Så mange tak for den
fine forklaring - nu forstår jeg det meget bedre!

-FF

>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.
>
>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).


Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408847
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste