> 백엔드 개발 > PHP 튜토리얼 > php_php 기술에서 ob_flush와 플러시의 차이점에 대해 간략하게 이야기하십시오.

php_php 기술에서 ob_flush와 플러시의 차이점에 대해 간략하게 이야기하십시오.

WBOY
풀어 주다: 2016-05-16 20:29:59
원래의
1031명이 탐색했습니다.

매뉴얼의 ob_flush/flush에 대한 설명은 출력 버퍼를 새로 고치기 위한 것이며, 이 역시 함께 사용해야 하므로 많은 분들에게 혼란을 줄 수 있습니다...

실제로 서로 다른 개체에 대해 작동하는 경우도 있지만 플러시는 전혀 작동하지 않습니다..

ob_* 계열 함수는 PHP 자체의 출력 버퍼를 작동합니다.

그래서 ob_flush는 PHP 자체 버퍼를 새로 고치는 것입니다.

엄밀히 말하면 플러시는 PHP가 Apache 모듈(핸들러 또는 필터)로 설치된 경우에만 실제 효과가 있습니다. 이는 WebServer(구체적으로 Apache로 간주될 수 있음)의 버퍼를 새로 고칩니다.

아파치 모듈의 sapi에서 플러시는 sapi_module의 플러시 멤버 함수 포인터를 호출하여 간접적으로 아파치 API를 호출합니다. ap_rflush는 아파치의 출력 버퍼를 새로 고칩니다. 물론 매뉴얼에는 다른 아파치 모듈도 있다고 나와 있습니다. . 이 작업의 결과가 바뀔 수 있습니다..

mod_gzip과 같은 일부 Apache 모듈은 자체적으로 출력 캐싱을 수행할 수 있으며, 이로 인해 플러시() 함수에 의해 생성된 결과가 즉시 클라이언트 브라우저로 전송되지 않습니다. 브라우저도 수신된 콘텐츠를 표시하기 전에 캐시합니다. 예를 들어, Netscape 브라우저는 줄 바꿈이나 html 태그의 시작 부분을 받을 때까지 콘텐츠를 캐시하고 태그를 받을 때까지 전체 테이블을 표시하지 않습니다.

일부 버전의 Microsoft Internet Explorer는 256바이트를 수신한 후에만 페이지 표시를 시작하므로 이러한 브라우저가 페이지 콘텐츠를 표시할 수 있도록 하려면 일부 추가 공간을 전송해야 합니다. 따라서 두 가지를 사용하는 올바른 순서는 먼저 ob_flush를 사용하는 것입니다. 물론 다른 sapi에서는 플러시를 호출하지 않는 것도 가능하지만 코드의 이식성을 보장하기 위해 사용하는 것이 좋습니다. 함께

flush 및 ob_flush를 사용할 때 출력 버퍼가 새로 고쳐지는 것을 방지하는 몇 가지 특별한 고려 사항이 있습니다.

1. 플러시 및 ob_flush의 올바른 순서는 다음과 같습니다. 먼저 ob_flush를 사용한 다음 플러시합니다. ob_flush();
플러시();
웹 서버의 운영체제가 Windows 시스템인 경우에는 순서가 바뀌거나 ob_flush()를 사용하지 않아도 문제가 없습니다. 그러나 Linux 시스템에서는 출력 버퍼를 플러시할 수 없습니다.

2. ob_flush()를 사용하기 전에 이전 콘텐츠 크기가 4069자에 충분한지 확인하세요.

일부 웹 서버의 출력 버퍼링은 기본적으로 4069자 이상입니다. 즉, 서버가 출력 버퍼를 플러시하기 전에 출력 내용이 4069자에 도달해야 플러시가 효과적인지 확인하는 것이 가장 좋습니다. ob_flush() 함수 앞의 다음 명령문:

인쇄 str_repeat(" ", 4096);
output_buffering 값에 도달했는지 확인합니다.

코드 복사 코드는 다음과 같습니다.
($i=1; $i<20; $i )
{
echo "".$i."";
에코 '
';
ob_flush();
플러시();
수면(1);
}
ob_end_flush();
?>

관련 라벨:
php
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿