Maison >développement back-end >tutoriel php >Explication détaillée de la façon de configurer une session avec un délai d'expiration strict en PHP
Cet article présente principalement la méthode de mise en place d'une session en PHP qui contrôle strictement le délai d'expiration, qui a une bonne valeur de référence. Jetons un coup d'oeil avec l'éditeur ci-dessous
Période de validité de la session 1.php
La période de validité de la session PHP est par défaut 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.
2.session.gc_maxlifetime, session.gc_probability, session.gc_pisor description
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 processus GC l'appellera à chaque fois que session_start() est 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.
3. Contrôlez strictement la méthode d'expiration de la session
1 Utilisez memcache/Redis pour enregistrer la session et définir l'heure d'expiration, car le mécanisme de recyclage de. memcache/redis n'est pas Selon la probabilité, il peut garantir que la session expirera après l'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 :
<?php session_start(); $data = '123456'; session::set('test', $data, 10); echo session::get('test'); // 未过期,输出 sleep(10); echo session::get('test'); // 已过期 ?>
délai d'expiration de session en phpcontrôle strictTutoriel Exemple_PHP
php contrôle strict Délai d'expiration de la session_Tutoriel PHP
php Contrôle strictDélai d'expiration de la session_Tutoriel PHP_Technologie de programmation
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!