PHP 출력을 flush()으로 강제로 플러시 할 수 있습니다. 물론 PHP's output buffering이 활성화되어 있으면 출력 버퍼로만 플러시됩니다.
PHP가 플러시되면 브라우저로 직접 이동하지 않을 수 있습니다. PHP는 웹 서버로 플러시하여 웹 서버의 구성에 따라 브라우저로 보냅니다. (그것은 바로 구성 않다면, 웹 서버에 최소한 명령 행에서, 또는)
그러나, 지금까지의 PHP에 관한 한, 다음 작동합니다 :
demo.php
<?php
ob_end_flush(); // make sure output buffering is off
for($i=0;$i<10;$i++){
echo "{$i}\n";
flush();
sleep(1);
}
커맨드 라인에서
:
$ php demo.php
표시한다 (1) ... (2) ... (3) ...과 일초 지연.
편집 : 내가 생각한 또 하나의 것. PHP에서 플러시 할 때 웹 서버가 출력을 "스트리밍"하더라도 출력이 다른 마크 업의 중간에있는 경우 사용자의 브라우저는 전체 응답을받을 때까지 아무 것도 렌더링하지 않을 수 있습니다.
즉, 기본 작업을 수행하는 경우 위의 전략을 사용하여 장기 실행 유틸리티 스크립트의 상태를 출력했습니다. 이 경우에는 출력물에 태그를 포함하지 않았지만 (적어도 당시 처리했던 서버에서는) 원하는대로 작동했습니다.
이 방법은 내부 도구로는 충분하지만 최종 사용자가 볼 수있는 모든 것에 대해이 기술을 사용하지 않습니다.
나는 당신이 전체 페이지로드까지 출력을 볼 수 없습니다 작동 – user482594
조차 플러시 서버 측 작업()의 종류 자바 스크립트를 사용하는 것이 더 좋을 것 같아. –
@ user482594와의 합의에 따르면, 이는 클라이언트 쪽에서 만 신뢰할 수있는 것으로, 대부분 자바 스크립트로 이루어질 수 있습니다. – Kibbee