IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Stockage des sessions


Sujet :

Langage PHP

  1. #1
    Membre confirmé Avatar de GregPeck
    Inscrit en
    Novembre 2005
    Messages
    530
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 530
    Points : 540
    Points
    540
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 !

  2. #2
    Membre éclairé
    Avatar de Kioob
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Points : 764
    Points
    764
    Par défaut
    [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.


    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

  3. #3
    Membre confirmé Avatar de GregPeck
    Inscrit en
    Novembre 2005
    Messages
    530
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 530
    Points : 540
    Points
    540
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    session_set_save_handler ( NULL, NULL, NULL, NULL, fonction_nettoyage, NULL)

  4. #4
    Membre confirmé Avatar de GregPeck
    Inscrit en
    Novembre 2005
    Messages
    530
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 530
    Points : 540
    Points
    540
    Par défaut
    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...

  5. #5
    Membre éclairé
    Avatar de Kioob
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Points : 764
    Points
    764
    Par défaut
    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).


    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.


    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...

  6. #6
    Membre confirmé Avatar de GregPeck
    Inscrit en
    Novembre 2005
    Messages
    530
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 530
    Points : 540
    Points
    540
    Par défaut
    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 !

  7. #7
    Membre éclairé
    Avatar de Kioob
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 550
    Points : 764
    Points
    764
    Par défaut
    De rien


    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.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [2.x] Stockage des sessions
    Par mathias89100 dans le forum Symfony
    Réponses: 0
    Dernier message: 17/07/2013, 10h14
  2. [1.x] Stockage des sessions en base de donnée
    Par bricecol dans le forum Symfony
    Réponses: 9
    Dernier message: 03/09/2010, 10h38
  3. Configuration du répertoire de stockage des sessions
    Par chouchouilloux dans le forum Langage
    Réponses: 3
    Dernier message: 08/03/2010, 13h30
  4. [tomcat] gestion des sessions
    Par sebos63 dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 12/10/2004, 14h25
  5. [Preferences] Stockage des options
    Par Yan83 dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 03/05/2004, 10h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo