Citazione:
Originalmente inviato da
dandbase
Il server genera un cookie(PHPSSID) che contiene la SID (Session ID) che viene inviato al client
In generale non e' cosi', esistono modi alternativi per gestire l'uso delle sessioni in PHP senza utilizzare cookie. L'uso dei cookie resta comunque l'approccio piu' comunque, e viene usato anche su AlterVista.
Citazione:
nel contempo il server crea un file (Quindi memorizzato sull'Hard Disk) che ha come nome la SID inviata al client, ed esso (non nel caso di AV, ovviamente) viene salvato sul path definito nel file php.ini.
Non e' detto, il server puo' gestire in diversi modi la persistenza delle sessioni, ad esempio puo' essere configurato per tenerle solo in RAM, eventualmente usando una strategia di swap quando necessario. Un altro approccio e' la persistenza sul filesystem, ma questo non vuol dire necessariamente che "il server crea un file [...] che ha come nome la SID[/i], significa piuttosto che i dati della sessione vengono salvati nel silesystem e che e' possibile accedervi usando la SID come chiave. Che si tratti di un file per ogni sessione, di un database o di un albero e' un dettaglio implementativo.
In ogni caso, come sviluppatore PHP, non hai bisogno di conoscere i dettagli implementativi, poiche' l'utilizzo delle sessioni e' il medesimo a prescindere dalla strategia di memorizzazione.
Citazione:
quando utilizziamo il comando session_start() creiamo l'array superglobale $_SESSION (Quindi attualmente si trova in RAM) che contiene tutte le variabili di sessione
Corretto, poiche' lo script e' in esecuzione il vettore si trova nella RAM.
Citazione:
ed esso viene salvato sul file una volta chiusa la sessione o utilizzato il comando session_commit().
Non e' detto, come conseguenza dei punti precedenti.
Citazione:
Dunque le variabili di sessione rimangono in RAM per tutto il tempo e a sessione chiusa vengono salvate sull'HD nel file corrispondente
No, assumendo che il server usi il filesystem per la persistenza dei dati la sessione resta nella RAM
solo per il tempo di esecuzione di un singolo script. Se script diversi vengono eseguiti durante la stessa sessione, il vettore che rappresenta quest'ultima viene verosimilmente riscritto e riletto per ogni script (ovviamente intervengono strategie di caching che cerano di evitare il piu' possibile le continue riscritture).
Citazione:
che però sostanzialmente, diventa subito un file "scaduto" perchè a sessione terminata il cookie corrispondente scade appunto perchè la sessione è scaduta.
Poiche' la sessione resta in RAM fintanto che lo script e' in esecuzione, quando questa viene deallocata dalla memoria non e' vero che la sessione e' necessariamente terminata, quindi e' corretto che sia presente il file (o altro sistema di persistenza) non scaduto.
Questo nell'ipotesi che il server sia configurato per avvalersi del filesystem per la persistenza delle sessioni. Se si basa solo sulla RAM o altri sistemi le tue domande non si pongono a priori.
Il discorso e' comunque reso piu' complesso da cache e simili, e da vari parametri di configurazione.
In ogni caso, il funzionamento lato PHP e' trasparente rispetto a questi dettagli.