네스트 함수 호출 제한 증가

PHP에는 매우 잘못된 제한이 있습니다.a2()를 호출하는 함수 a1()을 호출하면 a3을 호출하는 것입니다.그래서 언제a99()전화할 것이다a100()곧 알게 될 것이다

치명적 오류: 최대 함수 중첩 수준 ‘100’에 도달하여 중단합니다!

100 콜의 네스트 제한을 500 또는 10000으로 늘릴 수 있는 방법이 있습니까?

콜백이 많은 이벤트 기반 시스템을 개발하고 있기 때문에 이 기능은 매우 중요합니다.



질문에 대한 답변



이 오류 메시지는 특히 XDebug 확장에서 발생합니다.PHP 자체에는 함수 중첩 제한이 없습니다.php.ini 설정을 변경합니다.

xdebug.max_nesting_level = 200 

또는 PHP 코드:

ini_set('xdebug.max_nesting_level', 200); 

정말로 변경할 필요가 있는 경우(즉, 재귀 함수에 대한 대체 솔루션이 있는 경우)에 대해서는 코드가 없으면 알 수 없습니다.




Zend, IonCube 또는 xDebug가 설치되어 있습니까?이 경우, 이 에러가 발생하고 있을 가능성이 있습니다.

몇 년 전에 우연히 이런 일을 겪었는데 결국엔 PHP가 아니라 Zend가 거기에 제한을 두게 되었습니다.물론 삭제하면 100회 이상 반복할 수 있지만 결국 메모리 한계에 도달하게 됩니다.




개인적으로 이것은 조정이 필요한 설정이 아닌 오류라고 제안합니다.내 코드에 따르면 내 컨트롤러 중 하나에 라이브러리와 같은 이름을 가진 클래스가 있어서 교실을 망친 것 같았기 때문이다.

출력 오류 및 트리거 위치를 확인합니다.