Sessione da distruggere

Ciao a tutti,

anche se l'argomento è trito e ritrito provo a postare qui sperando

che qualcuno di voi mi aiuti a trovare il metodo più idoneo alle mie

esigenze al fine di gestire in maniera ottimale la sessione del mio sito.

Dopo le tante pagine lette sull'argomento sessione (molte ben redatte)

francamente continuo ad avere un po' di confusione.

Il problema è questo:

ho un sito con due aree distinte, diciamo A e B.

Le aree sono caratterizzate da due diversi colori per distinguere i due layout.

Alcune pagine del sito sono però valide sia per l'area A che per l'area B e quindi

per impostare l'area utilizzo una variabile di sessione che poi rileggo per

switchare il layout in base alla provenienza (A o B).

Il mio problema si presenta quando l'utente abbandona il sito ho chiude

il suo browser: il file di sessione resta ovviamente sul server.

Non posso usare session_destroy(); proprio perchè non posso

gestire l'evento abbandono o chiusura browser. Quindi mi chiedo:

- come posso cancellare il file di sessione quando si presenta uno dei due casi?

Eventualmente il timeout della sessione cancella il file? se si come posso settarlo?

Vi ringrazio anticipatamente :)

Peo

inviato 8 anni fa
peo974
X 0 X

Beh quando chiudi il browser la sessione si distrugge da sé e non ti serve gestire questo evento...

inoltre qualsiasi server dopo un tot di tempo di inattività chiude la sessione.

indi a te resta solamente di gestire il logout volontario...

cmq su sto sito esiste un'ottima guida sulle sessioni... non te la linko che scrivo da un cellulare!! :D

risposto 8 anni fa
larchitetto
X 0 X

ecco il link:

http://www.phpnews.it/articoli/le-sessioni/

Confermo quanto detto da larchitetto, se un utente chiude il browser allora perde il suo ID di sessione, pertanto quando accede nuovamente al sito avvia una nuova sessione, priva di dati

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

Grazie a tutti per le vostre risposte.

Concordo con quanto avete detto ma il mio problema resta.

Ho bisogno che venga cancellato il file della sessione (nella dir del php.ini)

dopo la chiusura del brownser o dopo  "n" di secondi ed il tutto senza invorcare eventi...

Spero di essermi spiegato  :-\

risposto 8 anni fa
peo974
X 0 X

I file di sessione vengono cancellati dal garbage collector di php, di tanto in tanto...

puoi impostare la probabilità di intervento del garbage collector intervenendo su queste variabili del php.ini:

session.gc_probability - session.gc_divisor

Il loro valore di default è rispettivamente 1 e 100 realizzando una probabilità di 1/100 ovvero dell' 1%

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

Gianni,

ti ringrazio ma anche su questo sono ben informato.

Quello che cerco è una sorta di strategia per settare un time-out

che una volta scaduto (browser chiuso o no) cancelli le sessioni

sia dalla memoria che dalla directory del sessiondata.

Insomma vorrei eviatare di delegare questa cosa alla probabilità

del GC.

Ragazzi mi sto spiegando?

Peo

risposto 8 anni fa
peo974
X 0 X

Se imposti la probabilità al 100% allora puoi stare sicuro che scaduta una sessione, al primo script eseguito da PHP verranno contestualmente cancellati i file di sessione.

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

Grazie ancora Gianni.

Mi chiedo se questa impostazione comporta pesanti impegni

computazionali da parte del web server...

Peo

risposto 8 anni fa
peo974
X 0 X

Cercare i file di sessione ormai inutili (perché scaduti) ad ogni pagina richiesta dall'utente è sicuramente un'operazione con un costo, altrimenti non esisterebbe la possibilità di specificare una probabilità di intervento del garbage collector.

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

cmq non capisco bene a che ti serve fare quest'operazione...

ci son gli strumenti che già fanno bene questo lavoro, php serve solo a pre processare gli iper testi.

illuminatemi!

risposto 8 anni fa
larchitetto
X 0 X

Grazie a tutti per il momento lascio fare al GC.

 O0

risposto 8 anni fa
peo974
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda