Originariamente inviato da VanBee
Ho visto che ci sono molti post nel forum tuttavia non ho trovato la soluzione.
Allora gestire le sessioni lato clienti è davvero facile, ma come faccio "gestirle" lato server?
Come faccio ad esempio a controllare il "contenuto" di una sessione "$_SESSION[nome_sessione]"?
Per spiegarmi meglio, se x persone di connettono ad una pagina in cui io setto una sessione $_SESSION[x]=nome, posso vedere quanti e quali "nomi" sono stati salvati?
Quando esiste l'esigenza di fare quello che dici tu, normalmente si usa una gestione delle sessioni su database (anziché solo su filesystem)

Non che non si possa fare di andare a leggere i file di sessione, ma le problematiche (sopratutto quelle relative al garbage collection delle sessioni) sono tali che nessuna persona sana di mente - IMO - va a fare statistiche di sessione su filesystem quando può usare un db.


(Una domanda, le sessioni lato client, se non altrimenti impostato, scadono alla chiusura del browser, quelle lato server?)

quelle lato server scadono
- o quando lo decidi tu nel tuo script chiamando session_destroy() (session_destroy distrugge la sessione ma le variabili di sessione $_SESSION[] saranno ancora disponibili in memoria per tutta la durata dello script)
E questo è semplice

-oppure a seconda del valore che è stato impostato in php.ini alla variabile
session.gc_maxlifetime, che di default vale 1440 secondi (24 minuti)
E questo è più complicato.

Vediamo di spiegarlo per passi:

a)In realtà dopo 1440 secondi (o altro valore impostato) la sessione non viene distrutta, ma viene "considerata distrutta".

b) Verrà distrutta solo al passaggio del GC (garbage collector) .

c)Domanda: e quando passa il GC?
Risposta: random!!!!!
Quando viene aperta un qualsiasi sessione con session_start() c'è una probabilità dell'x% che venga chiamato il GC
La buona notizia è che questa percentuale si puà decidere in php.ini

d) in php.ini ci sono due variabili
session.gc_probability (default =1)
session.gc_divisor(default =1000)
la probabilità che all'aperturà di una sessione venga chiamato il GC è esattamente
session.gc_probability su session.gc_divisor
(di default quindi c'è lo 0.1% di possibilità, ovvero una possibilità su 1000)

benvenuto nell'assurdo mondo delle sessioni!



BYTEZ

Cfr.:
http://php.net/session.gc-maxlifetime
http://php.net/session.gc-probability
http://php.net/session.gc-divisor