Quando sto creando un sito in PHP, che richiede autenticazione o in ogni caso una gestione delle sessioni, è sempre importante stabilire quanto una sessione dura, perché la cosa più fastidiosa è trovarsi buttato fuori da un sistema, solo perché ci si è allontatati dalla postazione oppure si è ricevuta una telefontata.

Dannazione!
In questo articolo spiegherò come impostare i giusti settaggi di PHP, preferibilmente nel file /etc/php5/cgi/php.ini oppure tramite il comando ini_set.
Il primo settaggio da impostare è session.cookie_lifetime, che specifica QUANTO un cookie deve durare sulla macchina del visitatore, misurato in secondi; di default è impostato a 0, che non significa per sempre, ma piuttosto fino a quando il browser non viene chiuso. Dei valori di riferimento sono: 3600 = 1 ora; 28800 = 8 ore; 86400 = un giorno.
Per impostare questo parametro, o si edita il file etc/php5/cgi/php.ini oppure si utilizza la funzione, se abilitata, ini_set(‘session.cookie_lifetime’, 3600).
Fatto questo, passiamo a session.gc_maxlifetime, che stabilisce quanto una sessione dura sul server, cioè dopo quanti secondi il nostro fido PHP butta via una sessione che non ha aggiornato dati. Il paramentro è più subdolo di quanto possa sembrare, perché una sessione creata alle 8:00, viene considerata vecchia di 10 minuti già alle 8:10 anche se l’utente continua a visitare il sito, se nessun dato dell’array $SESSION viene aggiornato, quindi sta a te stabilire da quanto considerare una sessione scaduta, se dalla sua creazione/ultimo aggiornamento reale, oppure se dall’ultima visita, in questo caso, ad esempio incremetare una variabile dummy ad ogni pagina, con il comando $SESSION['keepailve']++ dopo esserti ricordato di inizializzare keepalive alla creazione della sessione.
In ogni caso, questo parametro non andrà MAI oltre quello precedente, quindi se alzi maxlifetime, devi ricordarti di fare altrettanto con cookie_lifetime.
Inoltre, di base, in ogni sistema basato su Debian (quindi ad esempio Ubuntu), il garbage collector gira ogni 30 minuti, non più spesso, quindi non è detto che un cookie impostato per durare 2 minuti duri veramene 2 minuti, perché se il garbage collector passa e subito dopo dovrebbe scadere la sessione, scardrà solo 29 minuti più tardi, perché nessuno si accorge della scadenza se non ogni mezz’ora.
Per risolvere questo problema, bisogna modificare il file /etc/cron.d/php5 con i permessi di super utente, la prima riga non commentata, cioè che non inizia con #, dovrebbe essere circa:
09,39 * * * * root .....
Questo indica che il garbage collector gira alle 09 e alle 39 di ogni ora, per farlo girare più spesso (meno spesso non lo consiglio), basta mettere l’elenco, separato da virgole, dei minuti in cui far accadere il controllo. Ad esempio
4,9,14,19,24,29,34,39,44,49,54,59
facendo diventare la riga:
4,9,14,19,24,29,34,39,44,49,54,59 * * * * root .....
Esegue il controllo ogni 5 minuti.
(Grazie a nulll per questi dettagli e l’indagine approfondia svolta!)
Queste impostazioni che seguono teoricamente servono, ma in pratica non vengono utilizzate.
Ora veniamo al bello, da solo il parametro maxlifetime non basta, perché PHP non passa ogni istante, per fortuna del tuo server, a controllare quali sessioni buttare, altrimenti il carico diventa eccessivo, piuttosto ha una data probabilità di farlo ad ogni pagina generata. I parametri sono session.gc_probability e session.gc_divisor. Immaginiamo di averli impostati a:
session.gc_probability = 7 session.gc_divisor = 80
Bene, allora per ogni pagina visitata, PHP controllerà (o meglio lo farà il Garbage Collector, ma questo è un dettaglio) tutte le sessioni valide, con una probabilità di 7 su 80 = 7/80 = 0.0875
Io ti consiglio di lasciare le impostazioni di base, cioè rispettivamente 1 e 100, ma dipende solamente dal server e dalle pageviews del tuo sito.
Pingback: LaLaurie
Pingback: How to get rid of blackheads
Pingback: Garry Moore Venice
Pingback: olive garden coupons
Pingback: Bottle cap necklaces
Pingback: amor en linea
Pingback: http://healthadmin.ohio.edu/
Pingback: free grants money
Pingback: Raleigh plumbing company
Pingback: gps localizador
Pingback: mortgage credit repair
Pingback: acnezine
Pingback: Personalization Mall Coupon Code
Pingback: West Palm Beach attorneys criminal
Pingback: african mango dr oz show
Pingback: Swiss T Gallery
Pingback: african mango dr oz oprah
Pingback: used snowmobile for sale
Pingback: ruby tuesday coupons
Pingback: project imagination
Pingback: Niptiras mpaniou
Pingback: buy black wedges
Pingback: Kimberly Young
Pingback: Rolling Steel Buyer Guide
Pingback: motor home rentals orlando
Pingback: Rolling Metal Buyer Guide
Pingback: DWI Attorneys
Pingback: LCD versus LED
Pingback: 60hz vs 120hz
Pingback: kitchen remodeling Virginia
Pingback: fixed caged ladder
Pingback: intuition
Pingback: online dating
Pingback: how much house can i afford
Pingback: gestion de flotas
Pingback: coq10 ingredients
Pingback: criminal attorneys tampa
Pingback: hair loss re-growth
Pingback: PPI Claim Scotland
Pingback: LED TVs
Pingback: hardwood flooring
Pingback: extended stay hotel
Pingback: Panoramic
Pingback: Homepage
Pingback: cheap textbook rentals
Pingback: special valentines day gift ideas
Pingback: Best Tim Tebow Song
Pingback: word
Pingback: isuzu amigo
Pingback: kindle fire vs ipad
Pingback: soccer
Pingback: Read more on Herbal Incense