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

EDI, CMS, Outils, Scripts et API PHP Discussion :

Fonction recursive "nesting"


Sujet :

EDI, CMS, Outils, Scripts et API PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 159
    Par défaut Fonction recursive "nesting"
    Bonsoir à tous,

    Je rencontre une bizarrerie suite à l'appel d'une fonction récursive.
    Easyphp me donne ça :
    Fatal error: Maximum function nesting level of '100' reached, aborting!
    Ce qui me paraît bizarre, c'est que sur mon mac je fais tourner MAMP et qu'il ne me pose aucun problème pour réaliser ma récursion.

    J'ai essayé de commenter et de décommenter les lignes du php.ini relatives au xdebug (j'ai mis auto enabled à off).

    Quelqu'un aurait il déjà rencontré cela....

    Merci pour vos avis
    P.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    C'est bien une limitation imposée par xdebug :

    http://xdebug.org/docs/all_settings#max_nesting_level
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 159
    Par défaut
    Salut sabotage !

    Quand je mets au début de mon script un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ini_set('xdebug.max_nesting_level',5000);
    Il me dit que la connexion au serveur à échouée

  4. #4
    Membre Expert
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Par défaut
    Parfois c'est signe d'une erreur de programmation un grand nombre de récursion.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 159
    Par défaut
    Citation Envoyé par gene69 Voir le message
    Parfois c'est signe d'une erreur de programmation un grand nombre de récursion.
    Bonsoir gene69,

    En fait sous MAMP (sur mon mac) il tourne très bien sans erreur de recursion.
    J'ai mis un compteur dans ma récursion et il sort aux environs de 7000.

    Je pense donc que c'est cela qui pose problème.

    @sabotage : j'essaie ça.


  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 145
    Par défaut Ne pas oublier xDEBUG "profiler"
    Bonsoir,

    A condition de faire simple, xDEBUG "profiler" est très efficace pour régler ce type de problème.

    L'analyse se fera sans difficulté à partir d'une trace souvent de quelques mégas (si xdebug.profiler_append=0)

    Choisir les options pour générer un fichier unique par requête (cf. ci-dessus) et les suivre avec avec une trace Apache "level" debug et un format étendu éventuellement.

    Une récursion est tout de suite mise en évidence.

    Il suffit de placer ensuite une trace simple au bon endroit pour comprendre si quelque chose ne va pas, ou bien devrait s'arrêter plus tôt, voire beaucoup plus tôt.

    Ceci à moins d'utiliser le mode "remote" de xDEBUG ou le "profiler" en "trigger", mais c'est une autre histoire.

    Trebly

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    change le plutot directement dans le php.ini alors
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. [C#] probleme avec une fonction recursive
    Par K_!!! dans le forum ASP.NET
    Réponses: 2
    Dernier message: 01/08/2006, 18h22
  2. [Debutante] Fonction recursive avec un pointeur
    Par kidney dans le forum Débuter
    Réponses: 9
    Dernier message: 25/03/2006, 08h08
  3. Réponses: 3
    Dernier message: 22/12/2005, 11h20
  4. [XSL]Probleme fonction recursive
    Par Le-Cortex dans le forum XSL/XSLT/XPATH
    Réponses: 9
    Dernier message: 12/12/2005, 15h10
  5. probleme sql, fonction recursive
    Par CaptainChoc dans le forum Langage SQL
    Réponses: 2
    Dernier message: 21/11/2005, 01h45

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