>백엔드 개발 >PHP 튜토리얼 >pptv 크랙 버전 2013 PHP의 함수 중첩 수준 제한에 대한 무제한 분석

pptv 크랙 버전 2013 PHP의 함수 중첩 수준 제한에 대한 무제한 분석

WBOY
WBOY원래의
2016-07-29 08:45:321067검색

함수 중첩, 이 이름은 약간 혼란스럽고 이해하기 쉽지 않을 수 있습니다. 함수 중첩의 보다 일반적인 특수 사례: 재귀 함수, 즉 스스로 중첩되는 함수입니다. 나는 항상 PHP에서 중첩된 함수가 너무 많아지면 안 된다고 생각했습니다. 이는 과거 어느 시점에서 실수로 재귀를 사용했기 때문입니다. 프로그램은 치명적인 오류를 보고합니다. 예:

코드 복사 코드는 다음과 같습니다.


function rt() {
static $i ;
echo $i , '
'
rt()
rt()


in 광산 win7 php5.3 환경에서 보고된 오류는 다음과 같습니다: 치명적인 오류: 최대 함수 중첩 수준 '100'에 도달하여 중단 중입니다!

어느 날 PHP로 전환하기 전까지는 항상 이것이 PHP 자체의 한계라고 생각했습니다. liunx 환경으로 이동하여 명령줄 모드로 실행했는데 프로그램이 무한 루프에 들어간 것을 발견했습니다. 환경에 따라 결과가 다르게 나타나는 이유는 무엇입니까? 자, 소스코드에서 직접 오류 정보를 찾아보니 관련 내용이 없는 것으로 나타났고, 전체 실행 과정을 직접 디버깅했는데 win에서 보고된 오류는 없었습니다. 이유는 무엇입니까? 다시 win으로 전환하고 다시 검색하여 xdebug에서 오류 메시지를 찾으세요. xdebug.c 파일의 라인 1242에서 시작:


코드 복사 코드는 다음과 같습니다.

XG(level );

if (XG(level) == XG(max_nesting_level)) {
php_error(E_ERROR, "'%ld'의 최대 함수 중첩 수준에 도달했습니다.
중단합니다!", XG(max_nesting_level)) ;
}


이게 무슨 뜻인가요? 함수 중첩 레이어 수에 대한 이전 제한은 xdebug 확장에 의해 추가되었습니다. 이 제한이 있는 이유는 무엇입니까? xdebug에서 xdebug는 중첩된 함수 호출, 함수 호출의 메모리, 시간 및 기타 값을 포함하여 각 함수 호출을 기록합니다. 이러한 값은 프로그램 성능을 분석하는 데 매우 유용합니다. 이 제한이 없으면 중첩된 수준이 너무 많으면 컴퓨터의 메모리가 부족해집니다. 프로덕션 환경 서버인 경우 일부 서비스를 사용할 수 없습니다. 물론 이 확장은 프로덕션 환경에 추가되지 않습니다. 하지만 이 확장 기능은 여러 사람이 공유하는 개발 서버에서 사용할 수 있을 수도 있는데, 개발자의 프로그램 오류로 인해 기기를 사용할 수 없어 모든 개발자가 작업할 수 없는 경우에는 이것이 제한 사항을 추가하는 이유가 아닐까 생각합니다.

이 제한의 레이어 수를 늘려야 한다면 어떻게 해야 하나요? 소스 코드를 변경하고 xdebug 확장을 다시 컴파일하시겠습니까? 아니요, xdebug 구성 항목에는 xdebug.max_nesting_level이라는 항목이 있습니다. 기본적으로 이 구성 항목은 php.ini에 주석 처리되어 있습니다. 주석을 제거하고 이 값을 필요한 값인 200으로 변경하세요. 충분하지 않으면 500이지만 이 값은 너무 커서는 안 됩니다. 너무 많으면 프로그램 성능에 큰 영향을 미치게 되므로 이때는 재귀를 구현하는 것이 더 나은 해결책이 될 것입니다. 스택 형태로 사용하거나 루프로 대체합니다. 예를 들어 피보나치 수열(Fibonacci)을 구현하려면 루프를 사용하는 것이 더 빠릅니다.
결론: PHP 자체의 함수 중첩에는 제한이 없습니다. 제한이 있으면 메모리 제한이기도 합니다. 이는 PHP의 함수 중첩이 스택 형태로 구현되기 때문입니다. 각 함수에 대해 함수의 로컬 내용을 저장하기 위해 메모리 섹션이 할당됩니다.
이상은 pptv 크랙 버전 2013 무제한의 내용을 포함하여 pptv 크랙 버전 2013 무제한 PHP의 함수 중첩 레이어 제한에 대한 분석을 소개했습니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되길 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.