2012-10-30 14 views
8

Su ogni caricamento della pagina eseguo session_start() per riprendere la sessione corrente. Da quando inizia il conteggio session.gc_maxlifetime? La prima volta viene chiamato session_start() e viene impostato il cookie di quella sessione? Oppure il timer si riavvia ogni session_start()?Quando inizia sessione.gc_maxlifetime conteggio

Con il session.gc_maxlifetime impostato per circa 24 minuti, quando in questa linea temporale dovrebbe i dati di sessione essere garbage collection

1. 12:00:00 First page load, session_start(), session cookie created 
2. 12:10:00 page load, session_start() 
3. 12:26:00 page load, session_start() 
4. 12:55:00 page load, session_start() 

Se il timer inizia il primo caricamento della pagina session_start() allora mi aspetterei che spazzatura avrebbe raccolto il carico 3 . Ma se si resetta ogni session_start(), allora non sarebbe raccogliere fino a carico 4.

spero ne fanno il secondo perché poi ho potuto fare un battito cardiaco javascript ogni pochi minuti per chiamare una pagina che gira session_start().

Se è il primo, session.gc_maxlifetime inizia il conteggio dalla creazione del cookie di sessione Devo distruggere/ricreare o regenerate_id per reimpostare il conteggio?

+0

Stai utilizzando il gestore di sessione predefinito o uno diverso? – wgcrouch

+0

è questo filosofico o c'è un problema che stai cercando di risolvere? –

+0

Gestore di sessione predefinito –

risposta

2

Viene dall'ultima chiamata session_start() OR/AND l'ultima volta in cui è stato scritto. La mia ipotesi sarebbe quest'ultima dato che cambierebbe il timestamp "last modified" che il garbage collector di PHP userebbe per determinare se ha bisogno di essere eliminato o meno. In tal caso, inizia il conteggio dall'ultimo script alla fine che utilizza session_start() o che termina esplicitamente con esso mid script chiamando session_ write_ close().

P.S. Ciò renderebbe "heartbeat" piacevole e semplice (in una riga): http://prototypejs.org/api/ajax/periodicalUpdater

Problemi correlati