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 :

Souci session / destruction d'objet [PHP 5.3]


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 13
    Points : 10
    Points
    10
    Par défaut Souci session / destruction d'objet
    Bonjour,

    J'espère poster au bon endroit...
    Je rencontre une difficulté avec un gestionnaire de session qui utilise "session_set_save_handler".
    Le programme contient une classe abstraite de base qui peut se surcharger pour gérer les sessions avec différentes méthodes.
    L'une d'elle - qui me pose problème - permet de les stocker en base.

    Or, lorsque l'exécution s'arrête (par exemple à cause d'un die), le gestionnaire est bien appelé mais au moment où il souhaite écrire des informations dans la base de données l'objet responsable des écritures en base a déjà été détruit...

    Je n'ai pas trouvé de moyen de retarder la destruction de l'objet de sorte qu'elle se fasse après la fermeture de session.
    Quelqu'un aurait-il un moyen ?

    J'espère que ma question est claire et je mettrai des extraits du code si cela peut aider.

    Merci par avance pour vos idées
    Aero.

  2. #2
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Est-ce que tu conserves une référence active de l'objet de connection quelque part ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    L'objet est conservé dans un singleton "générique". Toutes les classes dont je souhaite qu'elles aient un comportement de singleton en héritent.

    Il y a donc une instance de la classe de gestion des bases de données qui est conservée dans un tableau statiques de la classe 'Singleton'.

    Mais je regarde, impuissant, les destructeurs des classes être appelés... et la boutique ferme avant que je n'ai pu passer commande ;(

    Mais j'ai progressé : je stocke dans la classe des sessions une instance de modèle qui hérite de la classe de gestion des bases de données. Il est possible que lorsque l'instance est détruite cet attribut passe à la trappe aussi et provoque la destruction de l'instance unique... Si c'est ce qui se produit alors la conception est à revoir... cela peut signifier qu'à cause du singleton générique et de l'héritage je travaille toujours sur des instances uniques.

    Je vais continuer de m'arracher d'investiguer

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    Manifestement le problème vient de là... lorsqu'un objet instancié avec une classe qui hérite du singleton est détruit, il provoque la destruction du singleton.
    Je vais donc devoir changer la mécanique Au bout de même pas 10 kilomètres ça fait mal au coeur... la prochaine fois je prendrais une garantie __constructeur

  5. #5
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    Est-ce que dans la classe du gestionnaire de session il y a un code du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    register_shutdown_function(array($this, 'close'));
    Théoriquement ceci permet de mettre fin à la session proprement.

    register_shutdown_function() permet de définir toutes fonctions ou méthodes de classe pour être appelé lors d'un die() ou exit().

    A voir si cela peut être utile de ton coté.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    Salut,

    J'ai exploré aussi cette piste.
    Mais finalement la conception est trop lourde, je suis en train de me réorienter vers quelque-chose de plus simple, et j'espère de plus stable...
    Mais je vous remercie pour votre aide

    @+

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

Discussions similaires

  1. [VB.NET 2.0] Destruction d'objet
    Par Torkan dans le forum Windows Forms
    Réponses: 3
    Dernier message: 01/06/2006, 02h02
  2. destruction d'objet
    Par goth dans le forum Langage
    Réponses: 8
    Dernier message: 19/03/2006, 15h52
  3. Destruction d'objet (.free) >> EAccessViolation
    Par monstroplante dans le forum Langage
    Réponses: 7
    Dernier message: 08/11/2005, 20h19
  4. destruction d'objets dans un vecteur
    Par titouille dans le forum C++
    Réponses: 12
    Dernier message: 28/07/2005, 19h20
  5. [débutante][Concept] Destruction d'objet, mode d'emploi?
    Par skea dans le forum Général Java
    Réponses: 4
    Dernier message: 12/06/2004, 21h48

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