>  기사  >  백엔드 개발  >  PHP는 시간이 많이 걸리는 스크립트를 실행하고 콘텐츠를 실시간으로 출력합니다.

PHP는 시간이 많이 걸리는 스크립트를 실행하고 콘텐츠를 실시간으로 출력합니다.

藏色散人
藏色散人앞으로
2019-10-24 14:22:071941검색

시간이 많이 걸리는 스크립트를 실행할 때 데이터는 스크립트가 실행된 후에만 출력됩니다. 처리되지 않으면 페이지에 출력된 콘텐츠를 메모리에 캐시하고 때까지 기다립니다. 실행, 여기서는 실시간 출력이 필요합니다.

flush — 출력 버퍼를 플러시합니다.

PHP가 실행되는 컨텍스트(CGI, 웹 서버 등)에 관계없이 PHP 프로그램의 버퍼를 플러시합니다. 이 함수는 지금까지 프로그램의 모든 출력을 사용자의 브라우저로 보냅니다.

flush() 함수는 서버나 클라이언트 브라우저의 캐시 모드에 영향을 주지 않습니다. 따라서 출력 버퍼를 플러시하려면 ob_flush() 및 플러시() 함수를 모두 사용해야 합니다.

일부 웹 서버 프로그램, 특히 Win32의 웹 서버 프로그램은 결과를 브라우저로 보내기 전에 프로그램이 끝날 때까지 스크립트 출력을 캐시합니다.

mod_gzip과 같은 일부 Apache 모듈은 자체 출력을 캐시할 수 있으며 이로 인해 플러시() 함수에 의해 생성된 결과가 클라이언트 브라우저로 즉시 전송되지 않습니다.

브라우저에서도 수신된 콘텐츠를 표시하기 전에 캐시합니다. 예를 들어, Netscape 브라우저는 줄 바꿈이나 html 태그의 시작 부분을 받을 때까지 콘텐츠를 캐시하고 f16b1740fad44fb09bfe928bcc527e08 태그를 받을 때까지 전체 테이블을 표시하지 않습니다.

일부 버전의 Microsoft Internet Explorer는 256바이트를 수신한 후에만 페이지 표시를 시작하므로 이러한 브라우저가 페이지 콘텐츠를 표시할 수 있도록 일부 추가 공간을 보내야 합니다.

실시간 출력이 필요한 경우 ob_flush, 플러시 두 가지 핵심 기능이 필요합니다.

<?php
 // echo phpinfo();
if (ob_get_level() == 0) ob_start();
for ($i = 0; $i<10; $i++){
    echo "<br> Line to show.";
    echo str_pad(&#39;&#39;,4096)."\n";
    ob_flush();
    flush();
    sleep(2);
}
echo "Done.";
ob_end_flush();

권장: "PHP 비디오 튜토리얼"

위 내용은 PHP는 시간이 많이 걸리는 스크립트를 실행하고 콘텐츠를 실시간으로 출력합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제