Destruction automatique des fichiers de sessions [Résolu]

Flachy Joe 2115 Messages postés jeudi 16 septembre 2004Date d'inscription 23 novembre 2017 Dernière intervention - 26 janv. 2007 à 10:12 - Dernière réponse : Flachy Joe 2115 Messages postés jeudi 16 septembre 2004Date d'inscription 23 novembre 2017 Dernière intervention
- 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
Afficher la suite 

5 réponses

Répondre au sujet
FhX 2368 Messages postés mercredi 13 octobre 2004Date d'inscription 18 avril 2015 Dernière intervention - 26 janv. 2007 à 13:36
+3
Utile
"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 :)
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de FhX
Flachy Joe 2115 Messages postés jeudi 16 septembre 2004Date d'inscription 23 novembre 2017 Dernière intervention - 26 janv. 2007 à 22:40
0
Utile
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
Commenter la réponse de Flachy Joe
FhX 2368 Messages postés mercredi 13 octobre 2004Date d'inscription 18 avril 2015 Dernière intervention - 27 janv. 2007 à 16:30
0
Utile
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 ^^
Commenter la réponse de FhX
malalam 10918 Messages postés lundi 24 février 2003Date d'inscription 2 mars 2010 Dernière intervention - 29 janv. 2007 à 08:03
0
Utile
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.
Commenter la réponse de malalam
Flachy Joe 2115 Messages postés jeudi 16 septembre 2004Date d'inscription 23 novembre 2017 Dernière intervention - 29 janv. 2007 à 08:40
0
Utile
@ malalam : Pas bête. C'est pas mon cas, je teste juste sur le serveur local avant de mettre en ligne...

Flachy Joe
Commenter la réponse de Flachy Joe

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.