L'utilisateur est connecté à un site Web PHP> Je redémarre Apache> L'utilisateur doit se reconnecter.
Comment éviter cela? (Je ne veux pas que l'utilisateur ait besoin de se reconnecter)
L'utilisateur est connecté à un site Web PHP> Je redémarre Apache> L'utilisateur doit se reconnecter.
Comment éviter cela? (Je ne veux pas que l'utilisateur ait besoin de se reconnecter)
Réponses:
Le stockage d'un jeton de session dans un autre emplacement en tant que sauvegarde éviterait ce problème. Vous pouvez toujours conserver vos informations principales $_SESSION
, mais conservez un jeton de sauvegarde:
Vous pouvez trouver de l'aide dans cette question StackOverflow: meilleure pratique pour les délais d' expiration de session et la connexion persistante dans php .
Vos données de session ne doivent pas être perdues simplement parce qu'Apache est arrêté ou redémarré à moins que les données de session ne soient stockées en mémoire et non sauvegardées sur disque (soit par le système de fichiers ou la base de données). Sinon, vous pourriez redémarrer l'intégralité du serveur et la session persisterait. Les données de session sont conçues pour être stockées à long terme. Le seul moment où la session est perdue est si:
Le SID est perdu. Les données de session existent toujours côté serveur, mais le client ne peut pas récupérer le SID, il ne peut donc pas relancer la même session. Cela peut se produire si le cookie SID expire (s'il s'agit d'un cookie) ou si les liens de session sont perdus (si le SID est un paramètre d'URL) ou si le SID n'est pas défini côté serveur ou modifié sans en informer le client.
Les données de session sont supprimées côté serveur. Cela se produit généralement lorsque PHP Garbage Collector de session s'exécute et voit que le fichier de session est plus ancien que session.gc_maxlifetime (qui est de 24 minutes par défaut). Sinon, cela peut se produire si l'application supprime explicitement la session . Sur certains serveurs, l'administrateur peut également avoir configuré un cronjob pour nettoyer régulièrement les anciennes données de session.
Rendu possible en utilisant le bon argument avec Apache:
apache2ctl -k graceful
Apache redémarrera sans perdre les sessions en cours.