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

Symfony PHP Discussion :

refreshUser() and loadByUsername() [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre du Club
    Inscrit en
    Mars 2011
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 107
    Points : 67
    Points
    67
    Par défaut refreshUser() and loadByUsername()
    Bonjour,

    je viens à vous pour un problème de performance sur le refreshUser().

    Dans ma méthode loadByUsername() je créé mon Objet User et je le set avec toutes mes informations (récupéré dans LDAP et dans MySQL) et je set en session mon user.

    Dans le refreshUser() j’exécute ma méthode loadByUsername().

    J'aimerai que mon refreshUser() n'aille pas re-créer mon User car toutes les information de celui ci sont en session et ça m'éviterai de faire des requêtes en base à chaque changement de page dans l'application.

    Donc au lieu de re-exécuter loadByUsername() je retourne mon user en session et là surprise ! Tous mes objets lié à l'user contiennent des objet PersistentCollection qui sont null.

    Je perd donc dans mon user en session tout mes objets lié à l'user alors que en exécutant loadByUsername à chaque refreshUser() je n'ai pas ce problème.

    Je remarque que pour une connexion il passe deux fois dans loadByUsername() (normalement c'est pour vérifier mon user avec la méthode equals() que je n'utilise pas car l'authentification ce passe au niveau de LDAP donc pour moi il retourne toujours true)
    Donc j'ai l'impression que un coup je set mon user comme il faut en session à la connexion et que il repasse une deuxième fois dans loadByUsername() et qu'il me set mon user avec les bonnes informations mais sans les objets liés...

    Est ce que quelqu'un aurai une idée de pourquoi je perd mes objets liés à l'user ?

  2. #2
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Points : 1 050
    Points
    1 050
    Par défaut
    Donc au lieu de re-exécuter loadByUsername() je retourne mon user en session et là surprise ! Tous mes objets lié à l'user contiennent des objet PersistentCollection qui sont null.
    Ce n'est pas vraiment une surprise: pour être en session un objet doit être sérialisé , on peut sérialiser un objet avec ses attributs (string,entier, date), mais on ne peut pas sérialiser une ressource tel qu'une connexion à la base de données, hors ton objet User a des références à des objets persistentCollection qui ont des références indirecte vers l'entityManager et la connexion PDO.
    voir la doc doctrine :
    http://docs.doctrine-project.org/pro...izing-entities

    tu peux tenter dans ta méthode refreshUser()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    //récupérer l'utilisateur depuis la session
    $userFromSession=$this->container->get('session')->get('mon_user');
    //rattacher cet utilisateur à l'entity manager, afin qu'il ne le considère pas comme un nouvel user
    $user=$this->container->get('doctrine')->getEntityManager()->merge($userFromSession);
    return $user;

  3. #3
    Membre du Club
    Inscrit en
    Mars 2011
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 107
    Points : 67
    Points
    67
    Par défaut
    Merci arnooo999 ton information m'a été très utile !!
    Du coup je gère mes sessions séparément de mes liaisons et ça marche impeccable sans avoir besoin de requête en base à chaque refreshUser() je vérifie juste l'existence de l'user en session.
    Car j'ai remarqué que le merge effectué une requête en base.

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

Discussions similaires

  1. Drag and drop "de l'extérieur"
    Par Invité dans le forum C++Builder
    Réponses: 12
    Dernier message: 31/03/2020, 10h10
  2. [Look and feel] Texte des JLabels en gras
    Par aliasjcdenton dans le forum AWT/Swing
    Réponses: 11
    Dernier message: 26/01/2006, 11h49
  3. mise en page (Header and Footer) en XML-XSL.
    Par christine dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 01/03/2004, 16h31
  4. SQL :select et AND
    Par Shabata dans le forum Langage SQL
    Réponses: 5
    Dernier message: 20/05/2003, 13h39
  5. Fip, modbus and co...
    Par xave dans le forum Développement
    Réponses: 2
    Dernier message: 24/05/2002, 13h25

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