Comment réécrire le mécanisme de stockage de session en php

不言
Libérer: 2023-04-03 06:02:01
original
3223 Les gens l'ont consulté

Comment réécrire le mécanisme de stockage de session en php

Cet article présente principalement comment réécrire le mécanisme de stockage de session en PHP. Il a une certaine valeur de référence. Maintenant, je le partage avec vous. Les amis dans le besoin peuvent s'y référer

<.>

Zone de données de session

est stockée dans le répertoire temporaire du système d'exploitation du serveur sous forme de fichier par défaut !

Lorsqu'il y a trop de zones de données de session, le stockage sous forme de fichiers ralentira le fonctionnement. La surcharge de lecture et d’écriture du disque (IO, entrée/sortie) est très élevée.

Dans les projets réels, d'autres méthodes seront utilisées pour stocker les données de session plus rapidement. Méthodes typiques : base de données, mémoire.

Prenons l'exemple du stockage dans la base de données pour expliquer : les données de session sont stockées dans la base de données !

Il suffit de réécrire les opérations directement liées à la zone de données de session :

Les plus basiques ne sont que 2 : lire et écrire !

1 : Définir 2 fonctions qui peuvent compléter la lecture et l'écriture.

Deux : informez le mécanisme de session d'utiliser les fonctions de lecture et d'écriture définies par l'utilisateur lorsque la lecture et l'écriture sont requises.

Recommandations de sujets connexes : session php (y compris des photos, des vidéos, des cas)

Définition 2 (en fait un total de 6 fonctions connexes requises) fonctions qui peuvent compléter la lecture et l'écriture

Informer mécanisme de session, Lorsque a besoin de lire et d'écrire, utilise fonctions de lecture et d'écriture définies par l'utilisateur pour compléter

Session_set_save_handler(
开始函数,结束函数,读函数,写函数,删除函数,GC函数
);
Copier après la connexion
Utilisé pour définir les fonctions définies par l'utilisateur comme fonctions liées au stockage de session.

La syntaxe ci-dessus n'est qu'une notification de paramètre, pas un appel aux 6 fonctions ci-dessus. Ces six fonctions ne seront utilisées que lorsque le mécanisme de session s'exécute jusqu'à un certain point. l'heure. Par exemple, il vous suffit d'appeler sessRead() lors de l'ouverture d'une session

Créer une table de session

Dans cette session, chaque enregistrement est une zone de données de session, ce qui équivaut à une session originale. déposer.

Structure de la table :

$_SESSION

Opération de lecture :

sessRead()

Qui appelle , qui a transmis l'information !

Lorsque le mécanisme de session PHP appelle cette fonction, l'ID de session actuel sera transmis à la fonction en tant que paramètre :

Par conséquent, un paramètre formel doit être spécifié pour accepter la session transmise. Paramètres ID. :

doit renvoyer la chaîne de données de la session de lecture. C'est le contenu du champ sess_content. S'il n'est pas lu, renvoyez simplement une chaîne vide, indiquant qu'il n'y a pas de données de session.

Opération d'écriture :

sessWrite()

Lorsque le mécanisme de session PHP appelle cette fonction pour effectuer une opération d'écriture, l'ID de session actuel et le contenu à écrire (sérialisé) seront transmis à la fonction !

nécessite 2 paramètres formels pour recevoir :

Test :

Opération de suppression :

sessDelete()

Lors de la destruction de la session.

a exécuté la fonction PHP :

peut détruire la session, supprimer la zone de données de session correspondante et fermer le mécanisme de session en même temps !

En raison de la nécessité de supprimer la zone de données de session, il est nécessaire d'ajouter une méthode de suppression :

Le mécanisme de session de PHP, lors de l'appel de sessDelete, passera l'ID de session en cours comme paramètre :

Session_destroy(); Besoin de définir des paramètres formels pour recevoir :

Opération de récupération de place : sessGC()

Garbage : Zone de données de session obsolète sur le serveur. ,

Comment déterminer les déchets ?

Si une zone de données de session n'a pas été utilisée pendant plus d'une certaine période de temps (la dernière opération d'écriture), elle est considérée comme des données inutiles.

Le point critique temporel : 1440 s par défaut. Peut être configuré :

Avec la dernière heure d'écriture, vous pouvez déterminer s'il s'agit d'une poubelle

Vous devez ajouter un champ pour enregistrer la dernière heure d'écriture.

Lors de la rédaction, mettez à jour ce champ :

sessWrite();

Condition de jugement : Expirée

Last_write

Comment supprimer ?

Pendant le processus session_start(), lorsque le mécanisme de session est activé : il est possible d'effectuer des opérations de garbage collection. Une fois exécutées, toutes les zones de données inutiles expirées seront supprimées.

La probabilité par défaut est de 1/1000.

Vous pouvez définir la probabilité :

Possibilité :

Base (diviseur) :

Ajuster le test de probabilité :

Il est recommandé d'ajuster pendant le cycle de script, d'utiliser la fonction ini_set(), et de le compléter avant d'ouvrir le mécanisme de session :

Implémentation sessGC()

Le mécanisme de session PHP passe la durée de validité maximale en paramètre !

Démarrer l'opérationsessBegin():

Les travaux d'initialisation

sont garantis d'être exécutés en premier. Complétez le code initial dans sessBegin :

Par exemple, initialisez la connexion à la base de données :

Fin de l'opération sessEnd() :

Travail final

Return true;

Détails de la syntaxe

Définir en premier avant d'ouvrir le mécanisme de session

Session_set_save_handler() précède session_start ( ) est appelé.

N'ouvrez pas la session automatiquement ! php.ini : session.auto_start = 0

PHPÉlément de configuration : session.save_handler

utilisé par PHP Storage mécanisme :

Enfin, il est recommandé de changer la configuration ci-dessus en utilisateur : indiquant la personnalisation de l'utilisateur !

Ce qui précède représente l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'étude de chacun. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois !

Recommandations associées :

Comment parcourir les dossiers pour obtenir le nom du répertoire d'images et le nom du fichier via php

Comment résoudre le problème de référence du tableau php laissé après la boucle foreach

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:
php
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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!