Maison  >  Article  >  développement back-end  >  Explication détaillée du mécanisme de recyclage automatique de Session en PHP

Explication détaillée du mécanisme de recyclage automatique de Session en PHP

伊谢尔伦
伊谢尔伦original
2017-04-26 17:44:552879parcourir

Dans des circonstances normales, vous pouvez détruire cette session en cliquant sur un bouton "Quitter" fourni sur la page. Cependant, si l'utilisateur ne clique pas sur le bouton Quitter, mais ferme directement le navigateur, se déconnecte d'Internet, ou éteint directement l'ordinateur en raison d'une panne de courant, etc., le fichier de session enregistré sur le serveur ne sera pas supprimé. Bien que vous fermiez le navigateur, vous devez attribuer un nouvel ID de session pour vous reconnecter la prochaine fois, mais cela est uniquement dû au paramètre session.cookie_lifetime = 0 dans php.ini pour définir l'ID de session dans le cookie client La date d'expiration en , précise la durée de vie du cookie envoyé au navigateur en secondes. Une valeur de 0 signifie "jusqu'à ce que le navigateur soit fermé", et la valeur par défaut est 0.

Lorsque le système attribue une période de validité à la session, l'ID de session disparaîtra automatiquement, que le navigateur soit ouvert ou non. . L'ID de session du client disparaît, mais le fichier de session enregistré sur le serveur n'est pas supprimé. Par conséquent, les fichiers de session côté serveur qui ne sont pas référencés par l'ID de session deviennent des « déchets ». Afin d'éviter que ces fichiers de session indésirables ne provoquent une charge excessive sur le système (car la session n'est pas une existence semi-permanente comme Cookie), le système dispose d'un mécanisme de nettoyage automatique des fichiers de session (fichiers indésirables) qui ne sera jamais utilisé.

Le fichier de Session enregistré par le serveur est un fichier texte ordinaire, il aura donc l'heure de modification du fichier. Une fois le « Programme de récupération de place » démarré, tous les fichiers de session expirés seront supprimés en fonction de l'heure de modification du fichier de session.

Quel est le mécanisme de démarrage du « programme de collecte des ordures » ?

Le "programme de collecte des déchets" est démarré lorsque la fonction session_start() est appelée. Un site Web a plusieurs scripts, et chaque script doit utiliser la fonction session_start() pour démarrer une session, et de nombreux utilisateurs y accéderont en même temps. Il est très probable que la fonction session_start() soit appelée N. fois en 1 seconde, et il serait déraisonnable que le "programme de collecte des déchets" soit démarré à chaque fois. Même si le « programme de collecte des déchets » est lancé au moins une fois toutes les 15 minutes, il sera nettoyé plus de 100 fois par jour, ce qui est trop fréquent. Définissez la probabilité de démarrer le programme de récupération de place en modifiant les options session.gc_probability et session.gc_divisor dans le fichier php.ini. Le système calculera la probabilité en fonction de la formule session.gc_probability/session.gc_divisor , par exemple, option session.gc_probability = 1, option session.gc_divisor = 100, donc la probabilité devient 1/100, ce qui is session_start() Le "programme de récupération de place" ne sera démarré que lorsque la fonction sera appelée 100 fois. Par conséquent, plus la page de session est consultée fréquemment, moins elle a de chances de démarrer. La recommandation générale est de l'appeler 1 000 à 5 000 fois avant qu'il ne démarre : 1/(1 000~5 000).

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