W PHP jest jeden bardzo zły limit: jeśli wywołasz jakąś funkcję a1 (), która wywołuje a2 (), wywołuje a3 ... więc kiedy a99()
zadzwonisz a100()
, zobaczysz
Błąd krytyczny: osiągnięto maksymalny poziom zagnieżdżenia funkcji „100”, przerywanie!
Czy istnieje sposób na zwiększenie limitu 100 wywołań zagnieżdżania do 500 lub 10000?
Ma to dla mnie kluczowe znaczenie, ponieważ tworzę system oparty na zdarzeniach z wieloma wywołaniami zwrotnymi.
Odpowiedzi:
Ten komunikat o błędzie pochodzi w szczególności z rozszerzenia XDebug. Sam PHP nie ma limitu zagnieżdżania funkcji. Zmień ustawienie w swoim php.ini:
lub w swoim kodzie PHP:
Jeśli chodzi o to, czy naprawdę musisz to zmienić (tj .: jeśli istnieje alternatywne rozwiązanie funkcji rekurencyjnej), nie mogę tego powiedzieć bez kodu.
źródło
xdebug.max_nesting_level = 100
opcji w swojej php.ini prostu wklej to w.Czy masz zainstalowany Zend, IonCube lub xDebug? Jeśli tak, prawdopodobnie jest to źródło tego błędu.
Wpadłem na to kilka lat temu i skończyło się na tym, że Zend stawia to ograniczenie, a nie PHP. Oczywiście usunięcie go pozwoli Ci przekroczyć 100 iteracji, ale ostatecznie osiągniesz limity pamięci.
źródło
Osobiście sugerowałbym, że jest to błąd, w przeciwieństwie do ustawienia, które wymaga dostosowania. W moim kodzie było tak, ponieważ miałem klasę, która miała taką samą nazwę jak biblioteka w jednym z moich kontrolerów i wydawało się, że się zepsuje.
Wyświetlaj błędy i zobacz, gdzie to się dzieje.
źródło