Il y a une très mauvaise limite en PHP: si vous appelez une fonction a1 () qui appelle a2 (), qui appelle a3 ... alors quand vous a99()
appellerez, a100()
vous verrez
Erreur fatale: niveau maximal d'imbrication des fonctions de «100» atteint, abandon!
Existe-t-il un moyen d'augmenter la limite de 100 appels d'imbrication à 500 ou 10000?
C'est essentiel pour moi car je développe un système basé sur des événements avec beaucoup de rappels.
Réponses:
Ce message d'erreur provient spécifiquement de l'extension XDebug. PHP lui-même n'a pas de limite d'imbrication de fonctions. Modifiez le paramètre dans votre php.ini:
ou dans votre code PHP:
Quant à savoir si vous avez vraiment besoin de le changer (ie: s'il existe une solution alternative à une fonction récursive), je ne peux pas le dire sans le code.
la source
xdebug.max_nesting_level = 100
option dans votre php.ini, collez-la simplement.Avez-vous installé Zend, IonCube ou xDebug? Si tel est le cas, c'est probablement de là que vous obtenez cette erreur.
J'ai rencontré ça il y a quelques années, et c'est finalement Zend qui a mis cette limite là-bas, pas PHP. Bien sûr, le supprimer vous permettra de dépasser les 100 itérations, mais vous finirez par atteindre les limites de la mémoire.
la source
Personnellement, je dirais que c'est une erreur par opposition à un paramètre qui doit être ajusté. Dans mon code, c'était parce que j'avais une classe qui portait le même nom qu'une bibliothèque dans l'un de mes contrôleurs et qu'elle semblait la faire trébucher.
Sortez les erreurs et voyez où cela est déclenché.
la source