Destruction automatique des fichiers de sessions

Résolu
Flachy Joe Messages postés 2103 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 21 novembre 2023 - 26 janv. 2007 à 10:12
Flachy Joe Messages postés 2103 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 21 novembre 2023 - 29 janv. 2007 à 08:40
Salut,
j'ai vu dans la doc de php que les fichiers de sessions (qui stockent les variables pour chaques sessions) sont sensés se détruire automatiquement (à l'ouverture de n'importe quelle session) si la session est fermée et qu'un certain temps est passé. Or chez moi (Apache 2 sous Mandriva 2007, php 5.1.6) ces fichiers restent.
Ça m'embete bien puisque j'utilise une base de donnée (et non les fichiers) pour enregistrer les infos des utilisateurs et qu'avec mon script un nouveau fichier de session est créé à chaque connexion.

Est ce que je doit me débrouiller pour suprimer les fichiers ou est ce qu'il vaut mieux que je les recyclent (en réutilisant les id de sessions déjà créés) ?

Dans mon script la session est crée avant la vérification de l'identité de l'utilisateur. Donc une erreur de login crée aussi une session, qui est détruite juste apres avec session_destroy, mais le fichier reste.

Merci pour votre aide.

Flachy Joe

5 réponses

FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
26 janv. 2007 à 13:36
"j'ai vu dans la doc de php que les fichiers de sessions (qui stockent
les variables pour chaques sessions) sont sensés se détruire
automatiquement", oui, c'est le GC qui s'occupe de ca tout seul.
Il se fait appeler 1 fois sur 100.

"Est ce que je doit me débrouiller pour suprimer les fichiers ou est ce
qu'il vaut mieux que je les recyclent (en réutilisant les id de
sessions déjà créés) ?"Nan, il faut juste configurer ton GC.

"Ça m'embete bien puisque j'utilise une base de donnée (et non les fichiers)"
Il faut que tu utilises session_set_save_handler() pour utiliser autre chose qu'un système de fichier pour les sessions :) La fonction de gc() y est également présente :)
3
Flachy Joe Messages postés 2103 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 21 novembre 2023 1
26 janv. 2007 à 22:40
Salut,
je n'utilise pas le session_set_save_handler, parcequ'en fait ça m'arrange bien d'utiliser le double systeme : je ne vais chercher les infos dans la base de donnée que lors de la création de la session, ensuite elle reste valide en utilisant le fichier.

Je ne connaisait pas le Garbage Collector...
Donc récapitulons :
A chaque ouverture de session, le GC à session.gc_probability / session.gc_divisor chances de démarrer (par défaut 1/100) et de supprimer les fichiers ayant plus de session.gc_maxlifetime secondes (par défaut 1440). Donc si je ne modifie pas ces valeurs par défaut il se peut que j'attende longtemps avant que quoi-que-ce-soit soit supprimé...
(cf. http://fr2.php.net/manual/fr/ref.session.php#ini.session.gc-probability )

Merci FhX.

Flachy Joe
0
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
27 janv. 2007 à 16:30
Oui, car si tu fait du GC un peu trop souvent, tu te retrouves avec des pertes de temps dû à une vérification et à une suppression d'une éventuelle session.

1/100 est a priori assez recommandé... j'avais essayé un système basé sur SQL en faisant une suppression de session à chaque fois qu'un visiteur rentre sur mon site ou change de page. Imagine 10 visiteurs qui consultent 5 pages chacun ==> 50 requètes de DELETE !!!
Avec le GC, 1 requète avec un peu de chance :)

Ca fait de l'économie, ca c'est sur ^^
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
29 janv. 2007 à 08:03
Hello,

juste une petite incursion pour un conseil : quand on a un serceur dédié, sur lequel potentiellement on hébergera plusieurs sites, et qu'on a besoin de modifier pour un site la façon dont fonctionnent les session, il vaut mieux isoler les sessions de ce site dans un répertoire qui lui sera propre. La raison étant que, par exemple, si on modifie le comportement des sessions pour qu'elles ne soient effacées que toutes 8h, mais qu'on a d'autres sites au comportement par défaut de ce côté-ci, le site modifié verra ses fichiers de session nettoyer au même rythme que les autres car le GC des autres sites (configuré par défaut) ne fera pas la distinction entre les fichiers de session de tel ou tel site.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Flachy Joe Messages postés 2103 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 21 novembre 2023 1
29 janv. 2007 à 08:40
@ malalam : Pas bête. C'est pas mon cas, je teste juste sur le serveur local avant de mettre en ligne...

Flachy Joe
0
Rejoignez-nous