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

Flex Discussion :

Problème avec SharedObject.flush()


Sujet :

Flex

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    195
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 195
    Par défaut Problème avec SharedObject.flush()
    Salut tout le monde,

    Je rencontre un problème quand j'essai de mettre à jour les données d'un sharedObject, voici ce que je fais:

    Par exemple quand l'utilisateur de mon application se connecte je crée initialement mon sharedObject et je le rempli:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public var sharedObj:SharedObject
     
    sharedObj = SharedObject.getLocal("session")
     
    sharedObj.data.nom = monNom
    sharedObj.data.id = monId
    sharedObj.flush()
    Ensuite j'utilise ces valeurs stockés dans les autres pages de mon application:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    sharedObj = SharedObject.getLocal("session")
    labelUtilisateurConnecte.text = sharedObj.data.nom
    Ensuite quand l'utilisateur se deconnecte je renvoi la page d'accueil pour qu'un autre utilisateur se connecte, et là ou le problème se pose, le nom et le id du nouvel utilisateur connecté ne sont pas accessibles qu'après la connecxion d'un autre utilisateur.
    Pour l'expliquer plus clairement, quand un utilisateur se connecte il regarde le nom de l'utilisateur qui s'est connecté avant lui et ainsi de suite.

    Je vous remercie d'avance de m'identifier la source de ce problème.

    Cordialement

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    793
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2009
    Messages : 793
    Par défaut
    Ensuite quand l'utilisateur se deconnecte je renvoi la page d'accueil pour qu'un autre utilisateur se connecte, et là ou le problème se pose, le nom et le id du nouvel utilisateur connecté ne sont pas accessibles qu'après la connecxion d'un autre utilisateur.
    Pour l'expliquer plus clairement, quand un utilisateur se connecte il regarde le nom de l'utilisateur qui s'est connecté avant lui et ainsi de suite.
    Honnêtement j'ai lu et relu plusieurs fois ces explications et je n'arrive pas à éliminer suffisamment d'incertitudes sur la compréhension pour avancer une explication.
    Donc merci de reformuler le problème plus clairement !!

    ex1:
    "ne sont pas accessibles qu'après la connexion"
    ça veut dire :
    1- ne sont pas accessibles après la connexion
    2- ne sont accessibles qu'après la connexion

    ex2:
    "il regarde le nom de l'utilisateur"
    est-ce que "regarde" doit être remplacé par "garde" ?

    A la réflexion le problème est certainement du au fait que le sharedObject est lu avant d'être mis à jour. Il faut tracer le code de lecture et de mise à jour pour vérifier cet ordre.

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    195
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 195
    Par défaut
    Merci pour votre réponse!
    Je vais essayer d'être plus clair, voici ce qui se passe exactement d'après mes nouveaux tests:

    0 - Dans mes pages j'affiche un message de bienvenue + le nom de l'utilisateur dans un onglet en haut de mes pages, par exemple, si l'utilisateur se nomme user, le message de bienvenue contiendra: "Bienvenue user"
    1 - Point de départ: L'utilisateur se connecte via la page d'authentification
    2 - L'utilisateur est redirigé par la suite vers une première page où il est sensé recevoir un message de bienvenue + son nom

    Maintenant supposons que l'utilisateur qui se connecte à l'application s'appel John et qu'avant lui un autre utilisateur qui s'appel Smith a été connecté.
    Problème: Au lieu que John reçoit le message "Bienvenue John" il reçoit "Bienvenue Smith"

    Remarques: ce qui est intriguant est que le fichier de mon sharedObject au niveau de mon disque dur est mis à jour d'une façon correcte, et les données de John sont chargées correctement dès que John visite une deuxième page.

    Comme vous avez mentionné dans votre message le fichier de mon sharedObject est lu avant qu'il soit mis à jour, mais la question qui se pose: comment remedier à ce problème?

    Merci encore.

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    793
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2009
    Messages : 793
    Par défaut
    Si les actions sont exécutées dans le désordre c'est parce que le code ne tient pas compte du caractère asynchrone de Flex.
    Il faut donc modifier le programme pour sérialiser certaines parties du code.

    Au lieu d'avoir
    événement1 -> action1 -> événement2 -> action2

    tu dois avoir
    événement1 -> événement2 -> action2 -> action1

    Pour sérialiser il faut déclencher l'événement2 uniquement après action1.

  5. #5
    Membre confirmé
    Inscrit en
    Décembre 2008
    Messages
    195
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 195
    Par défaut
    Si on shématise mon cas j'aurais:

    Evenement 1: Authentification dans la première page (Click sur le boutin valider)
    Action 1: Ecrire dans le sharedObject

    Evenement 2: Lecture du sharedObject dans la deuxième page
    Action 2: Affichage de la donnée du nom dans mon label de bienvenue

    Si j'asynchrone en suivant l'ordre conseillé j'aurai:

    1 - Authentification (dans la page 1)
    2 - Lecture du sharedObject (dans la page 2)
    3 - Affichage du résultat (dans la page 2)
    4 - Enregistrement des nouvelles données dans mon sharedObject (dans la page 1)

    je ne vois pas comment je peux basculer entre mes pages pour établir cette logique

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    793
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2009
    Messages : 793
    Par défaut
    utilise le mode debug ou la commande trace pour comprendre ce qui se passe.

  7. #7
    Membre émérite
    Homme Profil pro
    Consultant Angular / Java J2EE
    Inscrit en
    Novembre 2008
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Consultant Angular / Java J2EE
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2008
    Messages : 545
    Par défaut
    Citation Envoyé par dark_geek Voir le message
    Si j'asynchrone en suivant l'ordre conseillé j'aurai:

    1 - Authentification (dans la page 1)
    2 - Lecture du sharedObject (dans la page 2)
    3 - Affichage du résultat (dans la page 2)
    4 - Enregistrement des nouvelles données dans mon sharedObject (dans la page 1)

    je ne vois pas comment je peux basculer entre mes pages pour établir cette logique
    Salut,
    j'ai l'impression qu'il y a une incompréhension par rapport au message de Jylaxx : visiblement cet ordre serait celui que tu as actuellement, et non celui conseillé.
    Donc l'ordre que tu devrais utiliser est celui-ci : événement1 -> action1 -> événement2 -> action2.
    Je ne ferais que reprendre ses mots en disant que pour sérialiser il faut déclencher l'événement2 uniquement après l'action1.
    Donc une fois que l'action 1 est terminée, tu peux faire un 'dispatchEvent' de l'évènement 2.

Discussions similaires

  1. problème avec persist() et flush()
    Par Esteban17 dans le forum Doctrine2
    Réponses: 1
    Dernier message: 09/03/2012, 13h40
  2. Problème avec Response.Flush
    Par Loki13 dans le forum ASP
    Réponses: 1
    Dernier message: 12/12/2008, 10h36
  3. [PHP-JS] problème avec le flush
    Par bat dans le forum Langage
    Réponses: 4
    Dernier message: 05/10/2005, 15h03
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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