Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/02/2006, 13h16   #1
Membre éprouvé
 
Avatar de GregPeck
 
Inscription : novembre 2005
Messages : 530
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 530
Points : 464
Points : 464
Par défaut Stockage des sessions

Bonjour !

Dans mon application, je stocke des fichiers dans des répertoires temporaires nommé avec le numéro de session.

Je veux faire un script dans mon cron pour effacer les fichiers qui ne sont plus utilisés.

Je pensais donc faire un truc comme ça:
Lister tous les répertoires de mon répertoire http://domaine.com/tmp/, par exemple:
Code :
1
2
3
4
.
..
21dcf744701a9f48338cc6411ce2422e
83a1a7d9afee802a7b3addbb19b9ee1b
Ensuite je voudrais comparer cette liste de dossiers avec la liste des sessions qui sont ouvertes (pour ne pas effacer des fichiers d'une session encore ouverte).

Pour ça je compte lister les fichiers de session contenu dans le dossier session.save_path (dans mon cas /tmp) et effacer les répertoires dont je ne trouve pas de session ouverte.

Dans mon cas, j'ai des fichiers qui commence toujours par "sess_" suivi du numéro de session.

Cette application devra pouvoir s'installer sur différentes plateforme, mes questions sont donc les suivante:

1. Trouve-t-on toujours le répertoire de session dans session_save_path ?
2. Les fichiers de sessions commence-til toujours par "sess_" ?

Merci !
GregPeck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2006, 13h23   #2
Membre chevronné
 
Avatar de Kioob
 
Olivier Bonvalet
Inscription : septembre 2004
Messages : 550
Détails du profil
Informations personnelles :
Nom : Olivier Bonvalet
Âge : 32
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : septembre 2004
Messages : 550
Points : 723
Points : 723
Envoyer un message via MSN à Kioob
[quote]1. Trouve-t-on toujours le répertoire de session dans session_save_path ?

Non. Dans le cas d'un hebergement mutualisé par exemple, chaque "site" stockera ses sessions dans un dossier différent.


Citation:
2. Les fichiers de sessions commence-til toujours par "sess_" ?
Pas forcément non, cela dépend du gestionnaire de session. Le gestionnaire via fichier de PHP utilise toujours des fichiers "sess_"... mais il n'est pas forcément utilisé.



Solution : pourquoi ne pas supprimer tes dossiers lorsque PHP supprime les fichiers de session ? Il me semble plus logique de faire cette opération de manière synchronisée, non ?
=> http://fr.php.net/manual/fr/function.session-set-save-handler.php
Kioob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2006, 13h52   #3
Membre éprouvé
 
Avatar de GregPeck
 
Inscription : novembre 2005
Messages : 530
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 530
Points : 464
Points : 464
Citation:
Envoyé par Kioob
Solution : pourquoi ne pas supprimer tes dossiers lorsque PHP supprime les fichiers de session ? Il me semble plus logique de faire cette opération de manière synchronisée, non ?
=> http://fr.php.net/manual/fr/function.session-set-save-handler.php
J'avoue que je ne comprend pas bien comment cela fonctionne.
Si je met une fonction sur le destroy, celle ci sera appellé, même si le navigateur de l'internaute est fermé sans passer par un session_destroy() ???

Si c'est bien le cas, c'est l'idéal.

Si oui, on peux ne passer qu'une fonction de destroy comme ça ?
Code :
session_set_save_handler ( NULL, NULL, NULL, NULL, fonction_nettoyage, NULL)
GregPeck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2006, 13h56   #4
Membre éprouvé
 
Avatar de GregPeck
 
Inscription : novembre 2005
Messages : 530
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 530
Points : 464
Points : 464
Sinon, ne puis-je pas tout simplement forcer session.save_handler à "files" avec ini_set et fonctionner comme je voulais le faire au début ?

C'est une mois bonne solution que la tienne mais l'info m'interesse quand même au cas où la solution de session_set_save_handler ne fonctionne pas...
GregPeck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2006, 14h25   #5
Membre chevronné
 
Avatar de Kioob
 
Olivier Bonvalet
Inscription : septembre 2004
Messages : 550
Détails du profil
Informations personnelles :
Nom : Olivier Bonvalet
Âge : 32
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : septembre 2004
Messages : 550
Points : 723
Points : 723
Envoyer un message via MSN à Kioob
Citation:
J'avoue que je ne comprend pas bien comment cela fonctionne.
Si je met une fonction sur le destroy, celle ci sera appellé, même si le navigateur de l'internaute est fermé sans passer par un session_destroy() ???
Pas exactement non : le destroy est appelé uniquement quand un appel à session_destroy() est fait.
Ce qui nous interesse, c'est surtout le "garbage collector" (gc), qui se charge de "nettoyer" le dossier de session. Il est généralement appelé de manière alléatoire (1 chance sur 100, par défaut).


Citation:
Si oui, on peux ne passer qu'une fonction de destroy comme ça ?
Je pense pas non, à mon avis il faut définir toutes les méthodes. Mais dans la doc elles sont déjà presques toutes données en exemple.


Citation:
Sinon, ne puis-je pas tout simplement forcer session.save_handler à "files" avec ini_set et fonctionner comme je voulais le faire au début ?
Ca ne servira à rien à mon avis, ici le problème ça ne va pas être tes scripts mais plutot ceux des autres...
Et tout dépend de l'hebergeur également ; sur la plupart de mes machines les sessions sont stockées en mémoire... tu ne trouverais donc aucune référence sur le disque...
Kioob est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2006, 14h31   #6
Membre éprouvé
 
Avatar de GregPeck
 
Inscription : novembre 2005
Messages : 530
Détails du profil
Informations forums :
Inscription : novembre 2005
Messages : 530
Points : 464
Points : 464
Ok merci pour toute ses informations.
Je vais donc refaire une gestion des sessions en mysql. Le nettoyage sera quand même beaucoup plus simple.

Merci encore !
GregPeck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/02/2006, 14h38   #7
Membre chevronné
 
Avatar de Kioob
 
Olivier Bonvalet
Inscription : septembre 2004
Messages : 550
Détails du profil
Informations personnelles :
Nom : Olivier Bonvalet
Âge : 32
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : septembre 2004
Messages : 550
Points : 723
Points : 723
Envoyer un message via MSN à Kioob
De rien


Citation:
Je vais donc refaire une gestion des sessions en mysql. Le nettoyage sera quand même beaucoup plus simple.
Ouep, ça fini souvent comme ça.
Kioob est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h56.


 
 
 
 
Partenaires

Hébergement Web