>백엔드 개발 >PHP 튜토리얼 >PHP 중첩 출력 버퍼 코드 example_php 예제

PHP 중첩 출력 버퍼 코드 example_php 예제

WBOY
WBOY원래의
2016-05-16 20:15:371118검색

PHP의 출력 캐시는 중첩될 수 있습니다. 중첩 수준을 출력하려면 ob_get_level()을 사용하십시오.
테스트 결과 cli와 브라우저(PHP5.4)에서 출력 결과가 다른 것으로 나타났습니다.

설명서 지침은 다음과 같습니다.

ob_get_level()은 소멸자 내에서 항상 0을 반환합니다.
이는 소멸자가 호출되기 전에 출력 버퍼에 대한 가비지 수집이 이미 수행되었기 때문에 발생합니다

올바르게 출력하는 것도 매우 간단합니다.

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

ob_end_clean();
echo ob_get_level() //0

주제로 돌아가기:

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

ob_end_clean();

ob_start();
echo 'php1';//페이지에 출력되지 않습니다
$a = ob_get_level();
$b = ob_get_contents();//캐시된 결과를 가져와 변수에 할당
ob_clean();

ob_start();
echo 'php2';//페이지에 출력되지 않습니다
$c = ob_get_level();
$d = ob_get_contents();//캐시된 결과를 가져와 변수에 할당
ob_clean();

ob_start();
echo 'php3';//페이지에 출력되지 않습니다
$e = ob_get_level();
$f = ob_get_contents();//캐시된 결과를 가져와 변수에 할당
ob_clean();

echo 'level:'.$a.',ouput:'.$b.'
';
echo 'level:'.$c.',ouput:'.$d.'
';
echo 'level:'.$e.',ouput:'.$f.'
';

결과는 다음과 같습니다.

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

레벨:1,출력:php1
레벨:2,출력:php2
레벨:3,출력:php3

물론, 일정 수준의 버퍼링을 끄는 경우에는 다음과 같이 테스트해 보세요.

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

ob_end_clean();

ob_start();
echo 'php1';
$a = ob_get_level();
$b = ob_get_contents();
ob_clean();

ob_start();
echo 'php2';
$c = ob_get_level();
$d = ob_get_contents();
ob_end_clean(); //캐시를 지우고 닫습니다

ob_start();
echo 'php3';
$e = ob_get_level();
$f = ob_get_contents();
ob_clean();

echo 'level:'.$a.',ouput:'.$b.'
';
echo 'level:'.$c.',ouput:'.$d.'
';
echo 'level:'.$e.',ouput:'.$f.'
';

결과는 다음과 같습니다.

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

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