la période de validité de la session de php est par défaut de 1440 secondes (24 minutes ), si le client ne s'actualise pas pendant plus de 24 minutes, la session en cours sera recyclée et invalide.
Lorsque l'utilisateur ferme le navigateur, la session se termine et la session deviendra également invalide.
Vous pouvez modifier le session.gc_maxlifetime de php.ini pour définir le cycle de vie de la session, mais il n'y a aucune garantie que les informations de la session seront supprimées immédiatement après ce temps est dépassé. Étant donné que le GC est démarré sur la base d'une probabilité, il se peut qu'il ne démarre pas avant longtemps. Ensuite, un grand nombre de sessions sont encore valides après avoir dépassé session.gc_maxlifetime.
session.gc_maxlifetime = 30 signifie lorsque le fichier de session est dans 30 secondes S'il n'est pas consulté plus tard, il est considéré comme une session expirée et est en attente de recyclage GC.
La probabilité d'appel du processus GC est calculée via session.gc_probability/session.gc_pisor, et session.gc_pisor est par défaut de 1000,
Si session.gc_probability = 1000, alors le GC Le processus sera appelé à chaque fois que session_start() sera exécuté pour effectuer le recyclage.
Augmenter la probabilité de session.gc_probability/session.gc_pisor aidera, mais cela aura un impact sérieux sur les performances.
1 Utilisez memcache/redis pour enregistrer la session et définir l'heure d'expiration, car memcache. /redis Le mécanisme de recyclage n'est pas basé sur la probabilité et peut garantir que la session deviendra invalide après son expiration.
2. Utilisez uniquement PHP pour l'implémenter, créez une classe de session et écrivez l'heure d'expiration lorsque la session est écrite. Lors de la lecture, déterminez s'il a expiré en fonction du délai d'expiration.
<?php/** * Session控制类 */class Session{ /** * 设置session * @param String $name session name * @param Mixed $data session data * @param Int $expire 超时时间(秒) */ public static function set($name, $data, $expire=600){ $session_data = array(); $session_data['data'] = $data; $session_data['expire'] = time()+$expire; $_SESSION[$name] = $session_data; } /** * 读取session * @param String $name session name * @return Mixed */ public static function get($name){ if(isset($_SESSION[$name])){ if($_SESSION[$name]['expire']>time()){ return $_SESSION[$name]['data']; }else{ self::clear($name); } } return false; } /** * 清除session * @param String $name session name */ private static function clear($name){ unset($_SESSION[$name]); } } ?>
démo :
<?phpsession_start();$data = '123456'; session::set('test', $data, 10);echo session::get('test'); // 未过期,输出sleep(10);echo session::get('test'); // 已过期?>
Cet article explique comment utiliser php pour configurer une session qui contrôle strictement le délai d'expiration. Veuillez faire attention au site Web chinois de php pour le contenu associé. .
Recommandations associées :
Instructions pour utiliser la fonction de formatage d'horodatage mysql from_unixtime
À propos des fonctions mysql concat et group_concat Instructions à utiliser
Apprentissage du site Web chinois PHP sujet:session php (incluant photos, textes, vidéos, cas)
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!