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 :

Objets boucle infinie


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de tidou95220
    Homme Profil pro
    BI junior
    Inscrit en
    Novembre 2008
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : BI junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2008
    Messages : 263
    Par défaut Objets boucle infinie
    Bonjour,

    J'ai un petit soucis entre 2 classes, j'ai une classe SQL (connexion) et une classe TRACE le probleme c'est que j'aimerai bien instancier mon objet dans la classe SQL mais du coup elle boucle, l'une qui appel l'autre et vice et versa...

    Le cas du pattern singleton à deja été testé ça ne fonctionne pas avec mon problème


  2. #2
    Membre expérimenté
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    152
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2003
    Messages : 152
    Par défaut
    Un peu plus de précisions ?
    Un bout de code ?
    Un schema des méthodes qui s'inter appellent ?

    A priori ça sent la dépendance mutuellle entre les classes ce qui n'est jamais très bon, mais peu facilement se contourner.

    Mais sans plus de précisions difficile de t'en dire plus.

  3. #3
    Membre éclairé Avatar de tidou95220
    Homme Profil pro
    BI junior
    Inscrit en
    Novembre 2008
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : BI junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2008
    Messages : 263
    Par défaut
    Ok donc

    Voici ma classe connexion
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    class connexion {
     
    var $format
    .....
     
    function connexion ($format='')
    {
    // constructeur qui rempli mon objets et me permet la connexion
    }
     
    function select($requete)
    {
     
    }
     
    function insert($requete)
    {
    }
     
    }
    Ma classe trace

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    class trace{
     
    $ip;
    .....
    function trace($msg_error)
    {
          //recupere les info et rempli mon objet
    $connexion= new connexion('oracle');
    }
     
    function dotrace($msg_error)
    {
         // affiche la trace
    }
     
    }
    de nouveau ma classe connexion

    Donc si j'instancie ma classe trace dans connexion => boucle infinie :s


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    class connexion {
    
    var $format
    .....
    
    function connexion ($format='')
    {
    // constructeur qui rempli mon objets et me permet la connexion
     $trace = new trace();
     $trace->dotrace("error");
    }
    
    function select($requete)
    {
    
    }
    
    function insert($requete)
    {
    }
    
    }

    Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 261904 bytes) in C:\xampp\htdocs\include\class\connexion.php on line 49

    Merci

  4. #4
    Membre expérimenté
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    152
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2003
    Messages : 152
    Par défaut
    Jusque la je ne vois pas de boucle infinie.

    Est ce que trace instancie un objet sql ? Ce qui expliquerait la boucle.

    Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 261904 bytes) in C:\xampp\htdocs\include\class\connexion.php on line 49
    C'est pas forcement une boucle infinie (mais elle peut en être la source) mais un dépassement de capacité de mémoire, ne traiterais-tu pas des variables immenses dans trace ?

  5. #5
    Membre éclairé Avatar de tidou95220
    Homme Profil pro
    BI junior
    Inscrit en
    Novembre 2008
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : BI junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2008
    Messages : 263
    Par défaut
    J'ai remodifié mon code si tu peux jeter un oeil c'est le constructeur connexion à la place de sql

    oui trace instancie un objet sql, exactement d’où la boucle infinie... du moins je pense

  6. #6
    Membre expérimenté
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    152
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2003
    Messages : 152
    Par défaut
    A priori si tu déclenche une boucle infinie c'est que ton trace, qui j'ai l'impression gère le log d'erreurs, déclenche lui même une erreur lors du log de l'erreur dans la bdd.

    Ce qui en effet risque de boucler longtemps.

    Si tu blinde le log d'erreur, pour qu'il ne renvoie pas lui même une erreur, ça ne devrait plus boucler.

    Mais on est jamais à l'abri d'une erreur quand même. Tu peux donc ajouter en dernier paramètre du constructeur un booleen isTrace par exemple, par defaut à faux. Quand tu instancie au sein de trace, tu le met à true, et si il est à true, tu ne déclenche plus le trace si erreur il y'a dans la classe sql (en revanche déclenche dans ce cas une erreur via un throw sans quoi tu passerais à côté)

Discussions similaires

  1. boucle infinie dans la création d'objet en C#
    Par encoremoi21258 dans le forum C#
    Réponses: 1
    Dernier message: 21/04/2014, 16h25
  2. symptome de la boucle infinie dans une requete
    Par ouam81 dans le forum Langage SQL
    Réponses: 8
    Dernier message: 27/05/2005, 13h10
  3. Réponses: 15
    Dernier message: 24/05/2005, 09h34
  4. [Socket] Pb de boucle infinie
    Par Myogtha dans le forum Entrée/Sortie
    Réponses: 12
    Dernier message: 10/06/2004, 15h10
  5. [C#] Comment eviter les boucles infinies ?
    Par Thomas Lebrun dans le forum C#
    Réponses: 12
    Dernier message: 09/06/2004, 01h04

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