함수 중첩, 이 이름은 약간 혼란스럽고 이해하기 쉽지 않을 수 있습니다. 함수 중첩의 보다 일반적인 특수 사례: 재귀 함수, 즉 스스로 중첩되는 함수입니다. 나는 항상 PHP에서 중첩된 함수가 너무 많아지면 안 된다고 생각했습니다. 이는 과거 어느 시점에서 실수로 재귀를 사용했기 때문입니다. 프로그램은 치명적인 오류를 보고합니다. 예:
코드 복사 코드는 다음과 같습니다.
function rt() {
static $i ;
echo $i , '
'
rt()
rt()
in 광산 win7 php5.3 환경에서 보고된 오류는 다음과 같습니다: 치명적인 오류: 최대 함수 중첩 수준 '100'에 도달하여 중단 중입니다!
코드 복사 코드는 다음과 같습니다.
XG(level ); if (XG(level) == XG(max_nesting_level)) {
php_error(E_ERROR, "'%ld'의 최대 함수 중첩 수준에 도달했습니다.
중단합니다!", XG(max_nesting_level)) ;
}
이게 무슨 뜻인가요? 함수 중첩 레이어 수에 대한 이전 제한은 xdebug 확장에 의해 추가되었습니다. 이 제한이 있는 이유는 무엇입니까? xdebug에서 xdebug는 중첩된 함수 호출, 함수 호출의 메모리, 시간 및 기타 값을 포함하여 각 함수 호출을 기록합니다. 이러한 값은 프로그램 성능을 분석하는 데 매우 유용합니다. 이 제한이 없으면 중첩된 수준이 너무 많으면 컴퓨터의 메모리가 부족해집니다. 프로덕션 환경 서버인 경우 일부 서비스를 사용할 수 없습니다. 물론 이 확장은 프로덕션 환경에 추가되지 않습니다. 하지만 이 확장 기능은 여러 사람이 공유하는 개발 서버에서 사용할 수 있을 수도 있는데, 개발자의 프로그램 오류로 인해 기기를 사용할 수 없어 모든 개발자가 작업할 수 없는 경우에는 이것이 제한 사항을 추가하는 이유가 아닐까 생각합니다.