Verhoging van de limiet voor aanroepen van nestfuncties

Er is één zeer slechte limiet in PHP: als je een functie a1() aanroept die a2() aanroept, roept die a3 aan… dus wanneer a99()a100()je zult zien

Fatale fout: Maximaal functie-nestingniveau van ‘100’ bereikt, afgebroken!

Is er een manier om de limiet van 100 nesting calls te verhogen naar 500 of 10000?

Dit is van cruciaal belang voor mij omdat ik een op gebeurtenissen gebaseerd systeem ontwikkel met veel terugbelverzoeken.


Antwoord 1, autoriteit 100%

Deze foutmelding komt specifiek van de XDebug-extensie. PHP zelf heeft geen functie-nesting-limiet. Wijzig de instellingin uw php.ini:

xdebug.max_nesting_level = 200

of in uw PHP-code:

ini_set('xdebug.max_nesting_level', 200);

Als je het echt moet veranderen (d.w.z. als er een alternatieve oplossing is voor een recursieve functie), weet ik het niet zonder de code.


Antwoord 2, autoriteit 5%

Heb je Zend, IonCube of xDebug geïnstalleerd? Zo ja, dan is dat waarschijnlijk waar je deze fout vandaan krijgt.

Ik kwam dit een paar jaar geleden tegen, en het bleek dat Zend die limiet daar stelde, niet PHP. Als je het verwijdert, kun je natuurlijk voorbij de 100 iteraties gaan, maar uiteindelijk zul je de geheugenlimieten bereiken.


Antwoord 3

Persoonlijk zou ik willen voorstellen dat dit een fout is in plaats van een instelling die moet worden aangepast. In mijn code was het omdat ik een klasse had die dezelfde naam had als een bibliotheek in een van mijn controllers en het leek te struikelen.

Uitvoerfouten en kijk waar dit wordt geactiveerd.

Other episodes