Maison > développement back-end > tutoriel php > Comment utiliser PHP pour configurer une session avec un délai d'expiration strict

Comment utiliser PHP pour configurer une session avec un délai d'expiration strict

jacklove
Libérer: 2023-03-31 07:30:02
original
2408 Les gens l'ont consulté

Période de validité de la session 1.php

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.

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 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.

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 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[&#39;data&#39;] = $data;
        $session_data[&#39;expire&#39;] = 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][&#39;expire&#39;]>time()){                return $_SESSION[$name][&#39;data&#39;];
            }else{
                self::clear($name);
            }
        }        return false;
    }    /**
     * 清除session
     * @param  String  $name  session name
     */
    private static function clear($name){
        unset($_SESSION[$name]);
    }
}
?>
Copier après la connexion

démo :

<?phpsession_start();$data = &#39;123456&#39;;
session::set(&#39;test&#39;, $data, 10);echo session::get(&#39;test&#39;); // 未过期,输出sleep(10);echo session::get(&#39;test&#39;); // 已过期?>
Copier après la connexion

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

Explication sur la façon de gérer l'échec du démarrage de mysql innodb et l'impossibilité de redémarrer

Apprentissage du site Web chinois PHP sujetsession 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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal