매뉴얼에 있는 ob_flush/flush 설명에는 둘 다 출력 버퍼를 새로 고치고 함께 사용해야 하므로 많은 사람들에게 혼란을 줄 수 있다고 되어 있습니다...
실제로 서로 다른 개체에서 작동하는 경우도 있습니다. , 플러시는 아무것도 하지 않습니다.
ob_* 계열 함수는 PHP 자체의 출력 버퍼를 작동합니다.
그래서 ob_flush는 PHP 자체 버퍼를 새로 고칩니다.
엄밀히 말하면 플러시는 PHP에서만 사용할 수 있습니다. . 아파치 모듈(핸들러 또는 필터)이 설치된 경우에만 실질적인 효과가 있습니다(아파치에 대해 구체적으로 참조할 수 있음).
아파치 모듈의 sapi에서 플러시가 수행됩니다. sapi_module 함수 포인터의 플러시 멤버를 호출하고 Apache의 API를 간접적으로 호출합니다. ap_rflush는 Apache의 출력 버퍼를 새로 고칩니다. 물론 설명서에는 이 작업의 결과를 변경할 수 있는 다른 Apache 모듈도 있다고 나와 있습니다. mod_gzip과 같은 파일은 자체 출력 캐싱을 수행할 수 있으며 이로 인해 플러시() 함수에서 생성된 결과가 클라이언트 브라우저로 즉시 전송되지 않습니다.
브라우저에서도 수신된 콘텐츠를 표시하기 전에 캐시합니다. 예를 들어, Netscape 브라우저는 개행 문자나 html 태그의 시작 부분을 받을 때까지 콘텐츠를 캐시하고 태그를 받을 때까지 전체 테이블을 표시하지 않습니다.
일부 버전의 Microsoft Internet Explorer는 256바이트를 수신한 후에만 페이지 표시를 시작하므로 이러한 브라우저가 페이지 콘텐츠를 표시할 수 있도록 하려면 일부 추가 공간을 전송해야 합니다.
따라서 두 가지를 사용하는 올바른 순서는 먼저 ob_flush, 그 다음 플러시입니다.
물론 다른 sapi에서는 플러시를 호출할 수 없지만 코드의 이식성을 보장하기 위해 권장됩니다.
IE에서는 256바이트가 먼저 출력되어야 작동합니다.
코드 복사 코드는 다음과 같습니다. 다음:
function execte(){
echo str_pad(" ", 256)
for ($i=1;$i<10;$i ){
echo $i."< Br>";
ob_flush()
sleep(1)
}
위 내용은 플러시 내용을 포함하여 플러시 PHP 라인별 출력(ob_flush와 플러시의 조합)을 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.