PHP에서 중첩 출력 캐싱을 구현하는 방법은 무엇입니까? 이 기사에서는 주로 PHP 중첩 출력 캐싱 코드 예제를 소개하고 ob 시리즈 함수를 사용하여 중첩 출력 캐싱 예제를 해결합니다. 그것이 모두에게 도움이 되기를 바랍니다.
PHP의 출력 캐시는 중첩될 수 있습니다. 중첩 수준을 출력하려면 ob_get_level()을 사용하십시오.
테스트 결과 cli와 브라우저(PHP5.4)에서 출력 결과가 다른 것으로 나타났습니다.
수동 지침은 다음과 같습니다.
ob_get_level() will always return 0 inside a destructor. This happens because the garbage collection for output buffers has already done before the destructor is called
올바른 출력을 원하는 것도 매우 간단합니다.
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.'<br>'; echo 'level:'.$c.',ouput:'.$d.'<br>'; echo 'level:'.$e.',ouput:'.$f.'<br>';
결과는 다음과 같습니다.
level:1,ouput:php1 level:2,ouput:php2 level:3,ouput: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.'<br>'; echo 'level:'.$c.',ouput:'.$d.'<br>'; echo 'level:'.$e.',ouput:'.$f.'<br>';
결과는 다음과 같습니다.
level:1,ouput:php1 level:2,ouput:php2 level:2,ouput:php3
관련 권장 사항:
웹을 구현하기 위한 PHP 캐싱 도구 클래스 페이지 캐싱
위 내용은 PHP 중첩 출력 캐시 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!