130 votes

Augmentation du nombre d'appels aux fonctions d'imbrication

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

Fatal error: Maximum function nesting level of '100' reached, aborting!

Est-il possible d'augmenter la limite de 100 appels imbriqués à 500 ou 10 000? Ceci est essentiel pour moi parce que je développe un système basé sur des événements avec beaucoup de rappels.

262voto

netcoder Points 31874

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 réglage dans votre php.ini:

 xdebug.max_nesting_level = 200
 

Quant à savoir si vous devez vraiment le changer (par exemple, s’il existe une solution alternative à une fonction récursive), je ne saurais le dire sans le code.

13voto

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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X