Maison  >  Article  >  développement back-end  >  Quatre façons d'effacer automatiquement la session en php

Quatre façons d'effacer automatiquement la session en php

PHPz
PHPzoriginal
2023-04-10 09:35:261453parcourir

PHP efface automatiquement la session

La session est un mécanisme de gestion de l'état côté serveur couramment utilisé dans le développement Web. Le mécanisme de session peut stocker des informations sur les utilisateurs tout au long de la hiérarchie du site Web pour les utiliser lors de leur navigation sur le site Web. Bien que les sessions permettent de rendre les sites Web plus faciles à utiliser et plus interactifs, si les sessions ne sont pas nettoyées à temps, elles occuperont la mémoire du serveur. Par conséquent, il est très raisonnable de s’attendre à ce que les sessions expirées soient supprimées via le nettoyage automatique.

En PHP, le nettoyage automatique de Session peut être réalisé via les méthodes suivantes.

  1. Configuration dans php.ini

Dans le fichier php.ini, vous pouvez définir les deux options session.gc_probability et session.gc_divisor. Lorsque gc_probability divisé par gc_divisor est égal à 0, le mécanisme de garbage collection de la session sera démarré.

Par exemple :

session.gc_probability = 1
session.gc_divisor = 100

Cela signifie que le mécanisme de récupération de place de session sera démarré avec une probabilité de 1 %. La valeur par défaut de cette option est 1, ce qui signifie que chaque demande utilisateur tente de démarrer le mécanisme de récupération de place.

Pour démarrer automatiquement le mécanisme de récupération de place en même temps, vous pouvez ajouter l'option suivante :

session.gc_maxlifetime = 1440

Cela signifie que la session sera supprimée après 1440 secondes d'absence d'accès (soit 24 minutes) .

  1. Définissez l'heure d'expiration lors de la création de la session

Utilisez la fonction ini_set() pour définir l'heure d'expiration de la session. Par exemple :

ini_set('session.gc_maxlifetime', 1440);
session_set_cookie_params(1440);

De cette façon, la session expirera et sera supprimée après 1440 secondes (soit 24 minutes).

  1. Utilisez une minuterie

La minuterie peut effacer les sessions expirées à intervalles fixes. Vous pouvez utiliser la fonction setInterval() pour créer un minuteur, puis effectuer des opérations de nettoyage de session dans le minuteur.

Par exemple :

setInterval(function() {

$expire_time = time() - 1440;
$files = glob(session_save_path() . '/sess_*');
foreach ($files as $file) {
    if (file_exists($file)) {
        if (filemtime($file) < $expire_time) {
            unlink($file);
        }
    }
}

}, 600);

Ici, le minuteur effectuera un nettoyage de session toutes les 10 minutes. Le chemin du fichier Session est obtenu via la fonction session_save_path(). Par défaut, il s'agit de /tmp.

Lorsque vous utilisez des minuteurs, vous devez également faire attention au traitement simultané, car d'autres utilisateurs peuvent créer de nouvelles sessions lorsque le minuteur effectue des opérations de nettoyage.

  1. Effacer manuellement la session

Enfin, si les méthodes ci-dessus ne peuvent pas répondre à vos besoins, vous pouvez également effacer manuellement la session. Par exemple, lorsque l'utilisateur quitte, la session peut être détruite via la fonction session_destroy().

Par exemple :

session_start();
//Effectuer une opération de sortie utilisateur
session_destroy();

Le nettoyage manuel de la session nécessite que les développeurs la maintiennent eux-mêmes, ce qui nécessite plus de temps et d'efforts, mais peut également offrir de meilleures performances. contrôle .

Résumé

PHP nettoie automatiquement la session tout en améliorant les performances du site Web, et peut également empêcher la session d'occuper trop de mémoire du serveur. En configurant php.ini, le délai d'expiration de la session, la minuterie et le nettoyage manuel, les développeurs peuvent nettoyer la session dans différents scénarios pour améliorer la stabilité et la disponibilité du site Web.

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!

Déclaration:
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