L'utente ha effettuato l'accesso a un sito Web PHP> Riavvio di Apache> L'utente deve eseguire nuovamente l'accesso.
Come prevenirlo? (Non voglio che l'utente debba accedere nuovamente)
L'utente ha effettuato l'accesso a un sito Web PHP> Riavvio di Apache> L'utente deve eseguire nuovamente l'accesso.
Come prevenirlo? (Non voglio che l'utente debba accedere nuovamente)
Risposte:
La memorizzazione di un token di sessione in una posizione alternativa come backup eviterebbe questo problema. Potresti comunque conservare le tue informazioni principali $_SESSION
, ma mantenere un token di backup in:
Potresti trovare aiuto in questa domanda StackOverflow: best practice per i timeout della sessione e login persistente in php .
I dati della sessione non devono essere persi solo perché Apache viene arrestato o riavviato a meno che i dati della sessione non vengano archiviati in memoria e non sottoposti a backup su disco (né dal filesystem né dal database). Altrimenti, è possibile riavviare l'intero server e la sessione continuerebbe comunque. I dati della sessione sono progettati per essere archiviati a lungo termine. L'unica volta che la sessione viene persa è se:
Il SID è perso. I dati della sessione esistono ancora sul lato server, ma il client non è in grado di ripristinare il SID, quindi non può riavviare la stessa sessione. Ciò può accadere se il cookie SID scade (se è un cookie) o i collegamenti di sessione vengono persi (se il SID è un parametro URL) o il SID non è impostato sul lato server o viene modificato senza avvisare il client.
I dati della sessione vengono eliminati sul lato server. Questo di solito accade quando PHP Session Garbage Collector viene eseguito e vede il file di sessione più vecchio di session.gc_maxlifetime (che è di default 24 minuti). Altrimenti, può succedere se l'applicazione elimina esplicitamente la sessione . Su alcuni server, l'amministratore potrebbe anche aver configurato un cronjob per ripulire regolarmente i vecchi dati della sessione.
Reso possibile utilizzando l'argomento giusto con Apache:
apache2ctl -k graceful
Apache si riavvierà senza perdere le sessioni correnti.