2009-09-06 8 views
2

Je supprime périodiquement les fichiers de session hors tmp. Apparemment, j'ai mal géré les sessions en raison du nombre énorme de sessions. Comment gérez-vous vos sessions, pas leur montant devenant trop grand? Comment vous assurez-vous de ne pas faire une nouvelle session s'il en existe une?PHP: comment limiter le nombre de fichiers de session?

Commande Je l'ai utilisé, ne sais pas comment ils fonctionnent vraiment:

ob_start(); 
session_save_path("/tmp/"); 
session_start(); 
ob_end_flush(); 
+1

Quel gestionnaire d'enregistrement de session utilisez-vous? PHP par défaut (fichiers)? – Gumbo

Répondre

2

Dans une installation PHP correctement configurée, vous ne devriez pas avoir besoin de nettoyer vos données de session à la main. Vous devriez lire les pages sur sessions in the manual et vérifier quelques-uns des configuration directives. Les chances sont que vous avez fixé gc_maxlifetime à une valeur très élevée, et ils n'ont tout simplement pas atteint la limite "expiration" à collecter automatiquement. Vous devez vérifier vos applications pour vous assurer qu'elles ne définissent pas de valeurs étranges pour les paramètres de session (en utilisant ini_set()) pendant l'exécution.

PHP dispose d'un algorithme interne qui s'exécute sur session_start() qui décide s'il doit effectuer une opération de nettoyage de la mémoire et supprimer les anciens fichiers de session. Pour des raisons de performances, je crois que la probabilité par défaut de faire une exécution à chaque fois est de 1%, donc en moyenne, une routine de collecte des ordures sera démarrée une fois sur 100 appels session_start(). Si vous trouvez que cela ne suffit pas, vous pouvez augmenter le paramètre gc_divisor à quelque chose de supérieur à 1.

0

PHP doit être supprimer automatiquement les anciens fichiers de session une fois qu'ils sont plus vieux de quelques heures. Vos paramètres session.gc_probability, session.gc_divisor et session.gc_maxlifetime peuvent contenir des valeurs impaires. Vérifiez le sessions runtime configuration section of the PHP manual pour plus d'informations et leurs valeurs par défaut.

Ce n'est pas quelque chose que vous pouvez (ou devriez) tenter de gérer par vous-même.

Si vous avez toujours trop de fichiers, utilisez les paramètres avancés de session.save_path pour créer des sous-répertoires pour les sessions. Cela devrait accélérer l'accès au système de fichiers aux fichiers individuels.

Questions connexes