Cet article vous présente principalement l'exemple de code sur la façon de modifier le temps de survie de SESSION en PHP. L'éditeur pense que c'est plutôt bon, je vais donc le partager avec vous maintenant et le donner comme référence. Suivons l'éditeur pour y jeter un œil, j'espère que cela pourra aider tout le monde.
Comment modifier la durée de vie de la SESSION
Définissons manuellement la durée de vie de la session :
<?php session_start(); // 保存一天 $lifeTime = 24 * 3600; setcookie(session_name(), session_id(), time() + $lifeTime, "/"); ?>
En fait, Session fournit également une fonction session_set_cookie_params(); pour définir la durée de vie de Session. Cette fonction doit être appelée avant que la fonction session_start() soit appelée :
<. 🎜>
<?php // 保存一天 $lifeTime = 24 * 3600; session_set_cookie_params($lifeTime); session_start(); $_SESSION["admin"] = true; ?>
Réglage du délai d'expiration de session en php
1. Comment existe-t-il une session côté serveur (généralement Apache avec module PHP) ?
Par défaut, php enregistrera la session dans le répertoire /tmp, et le nom du fichier sera comme ceci : sess_01aab840166fd1dc253e3b4a3f0b8381. Chaque fichier correspond à une session. plus /tmp/sess_01aab840166fd1dc253e3b4a3f0b83812. Comment la session existe-t-elle côté client (généralement le navigateur) ?
La session se fait côté navigateur, il vous suffit de sauvegarder l'ID de session (l'ID unique généré côté serveur). Il existe deux manières de l'enregistrer : dans les cookies et dans les URL. Si l'ID de session est enregistré dans le cookie, vous pouvez voir qu'il existe une variable PHPSESID dans le cookie du navigateur. S'il est passé par URL, vous pouvez voir une URL sous la forme :index.php?PHPSESID=01aab840166fd1dc253e3b4a3f0b8381. (Côté serveur, utilisez session.use_cookies pour contrôler quelle méthode est utilisée)
3 Côté serveur, comment PHP détermine-t-il si le fichier de session a expiré ?
Si la "dernière heure de modification" à "maintenant" dépasse gc_maxlifetime (la valeur par défaut est 1440) secondes, ce fichier de session est considéré comme expiré lors du recyclage de la prochaine session, si ce fichier l'a encore. n'a pas été modifié, le fichier de session sera supprimé (la session expirera). Pour faire simple, si je me connecte à un site internet et qu'il n'y a aucune opération dans un délai de 1440 secondes (valeur par défaut), alors la session correspondante est considérée comme expirée. Ainsi, modifier la variable gc_maxlifetime dans le fichier php.ini peut prolonger le délai d'expiration de la session : (par exemple, on modifie le délai d'expiration à 86400 secondes)
session.gc_maxlifetime = 86400
3. Quand a lieu la séance de « recyclage » ?
Par défaut, pour chaque requête php, il y aura une probabilité de recyclage de 1/100, cela peut donc être simplement compris comme "un recyclage a lieu pour 100 requêtes php". Cette probabilité est contrôlée par les paramètres suivants#概率是gc_probability/gc_pisor session.gc_probability = 1 session.gc_pisor = 100
Quelques situations particulières.
Car le mécanisme de recyclage va vérifier "l'heure de dernière modification" du fichier, donc si une session est active mais que le contenu de la session n'a pas changé, alors le fichier de session correspondant n'a pas changé, et le recyclage Le mécanisme considérera cela. Il s'agit d'une session qui n'a pas été active depuis longtemps et qui sera supprimée. C'est quelque chose que nous ne voulons pas voir. Nous pouvons résoudre ce problème en ajoutant le code simple suivant :<?php if(!isset($_SESSION['last_access'])||(time()-$_SESSION['last_access'])>60) $_SESSION['last_access'] = time(); ?>
PHP obtient le temps de stockage des données MySQL.
Obtenez du temps de stockage sans données MySQL en utilisant PHP.
Explication détaillée de la façon de modifier le temps de stockage de survie de SESSION en PHP
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!