Es gibt eine sehr schlechte Grenze in PHP: Wenn Sie eine Funktion a1 () aufrufen, die a2 () aufruft, die a3 aufruft ... also, wann Sie a99()
aufrufen, werden a100()
Sie sehen
Schwerwiegender Fehler: Maximale Funktionsverschachtelungsstufe von '100' erreicht, Abbruch!
Gibt es eine Möglichkeit, das Limit von 100 Verschachtelungsaufrufen auf 500 oder 10000 zu erhöhen?
Dies ist für mich von entscheidender Bedeutung, da ich ein ereignisbasiertes System mit vielen Rückrufen entwickle.
Antworten:
Diese Fehlermeldung stammt speziell von der XDebug-Erweiterung. PHP selbst hat keine Verschachtelungsgrenze für Funktionen. Ändern Sie die Einstellung in Ihrer php.ini:
oder in Ihrem PHP-Code:
Ob Sie es wirklich ändern müssen (dh ob es eine alternative Lösung für eine rekursive Funktion gibt), kann ich ohne den Code nicht sagen.
quelle
xdebug.max_nesting_level = 100
Option nicht in Ihrer php.ini haben, fügen Sie sie einfach ein.Haben Sie Zend, IonCube oder xDebug installiert? Wenn ja, erhalten Sie diesen Fehler wahrscheinlich von dort.
Ich bin vor ein paar Jahren darauf gestoßen, und es endete damit, dass Zend diese Grenze dort setzte, nicht PHP. Wenn Sie es entfernen, können Sie natürlich die 100 Iterationen überschreiten, aber Sie werden schließlich die Speichergrenzen erreichen.
quelle
Persönlich würde ich vorschlagen, dass dies ein Fehler ist, im Gegensatz zu einer Einstellung, die angepasst werden muss. In meinem Code lag es daran, dass ich eine Klasse hatte, die den gleichen Namen wie eine Bibliothek in einem meiner Controller hatte, und es schien, als würde sie ausgelöst.
Ausgabefehler und sehen, wo dies ausgelöst wird.
quelle