Destruction automatique des fichiers de sessions [Résolu]

Signaler
Messages postés
2083
Date d'inscription
jeudi 16 septembre 2004
Statut
Membre
Dernière intervention
15 octobre 2020
-
Messages postés
2083
Date d'inscription
jeudi 16 septembre 2004
Statut
Membre
Dernière intervention
15 octobre 2020
-
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

Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
3
"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 :)
Messages postés
2083
Date d'inscription
jeudi 16 septembre 2004
Statut
Membre
Dernière intervention
15 octobre 2020
1
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
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
3
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 ^^
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
22
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.
Messages postés
2083
Date d'inscription
jeudi 16 septembre 2004
Statut
Membre
Dernière intervention
15 octobre 2020
1
@ malalam : Pas bête. C'est pas mon cas, je teste juste sur le serveur local avant de mettre en ligne...

Flachy Joe