Il y a une très mauvaise limite en PHP: si vous appelez une fonction a1 () qui appelle a2 (), qui appelle a3 ... alors quand a99()
appellera a100()
, vous verrez
Erreur fatale: niveau maximum d'imbrication de fonction de '100' atteint, abandon!
Est-il possible d'augmenter la limite de 100 appels imbriqués à 500 ou 10 000?
Ceci est essentiel pour moi car je développe un système basé sur des événements avec beaucoup de rappels.
Ce message d'erreur provient spécifiquement de l'extension XDebug. PHP lui-même n'a pas de limite d'imbrication de fonctions. Changez le paramètre dans votre php.ini:
xdebug.max_nesting_level = 200
ou dans votre PHP code:
ini_set('xdebug.max_nesting_level', 200);
Quant à savoir si vous devez vraiment le changer (c'est-à-dire: s'il existe une solution alternative à une fonction récursive), je ne peux pas dire sans le code.
Avez-vous installé Zend, IonCube ou xDebug? Si c'est le cas, c'est probablement de là que vient cette erreur.
Je me suis heurté à cela il y a quelques années, et c'est finalement Zend qui a imposé cette limite, pas PHP. Bien sûr, le supprimer vous permettra de dépasser les 100 itérations, mais vous atteindrez éventuellement les limites de la mémoire.
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 avait le même nom qu'une bibliothèque dans l'un de mes contrôleurs et ça a semblé la dérouter.
Erreurs de sortie et voir où cela est déclenché.