<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 코드 의이 부분은 텍스트의 내용과 관련이 없습니다.,예를 들어 데모 만</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"스크립트 실행을 시작하십시오...<br>"</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">sleep</span></span><span>(</span><span><span class="hljs-number">1</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"출력 내용을 준비하십시오...<br>"</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">sleep</span></span><span>(</span><span><span class="hljs-number">1</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
<hr>
</span><span><span class="hljs-meta"><?php</span></span><span>
<span class="hljs-comment">/*
* 제목:사용하는 방법 flush() 실시간 컨텐츠 출력?PHP 실용적인 기술 분석
*
* 존재하다 PHP 가운데,기본적으로,웹 페이지 컨텐츠는 스크립트가 실행될 때까지 한 번에 클라이언트 브라우저로 전송됩니다.。
* 이것은 프로그램을 오랫동안 실행 해야하는 경우,用户존재하다等待时看不到任何反馈,열악한 경험。
* 이 문제를 해결합니다,PHP 제공 flush() 기능,버퍼의 내용은 즉시 브라우저로 보낼 수 있습니다.,컨텐츠 구현“실시간 출력”。
*
* 이 기사는 자세히 소개합니다 flush() 사용 방법,并결합实战技巧帮助你존재하다项目가운데提升用户体验。
*/</span>
</span><span><span class="hljs-comment">// 1. flush() 기본 원리</span></span><span>
</span><span><span class="hljs-comment">// flush() 기능用于强制将 PHP 출력 버퍼의 내용은 클라이언트로 전송됩니다.。</span></span><span>
</span><span><span class="hljs-comment">// 하지만,그것은 주목해야합니다,flush() 지우지 않을 것입니다 PHP 출력 버퍼,현재 버퍼 컨텐츠를 클라이언트에게 푸시하려고합니다.。</span></span><span>
</span><span><span class="hljs-comment">// 2. 결합 ob_flush()</span></span><span>
</span><span><span class="hljs-comment">// 존재하다实际应用가운데,왜냐하면 PHP 출력 버퍼링은 기본적으로 활성화됩니다(Output Buffering),별도로 호출됩니다 flush() 아마도 작동하지 않을 것입니다。</span></span><span>
</span><span><span class="hljs-comment">// 그러므로,일반 협력 ob_flush() 사용,먼저 명확합니다 PHP 완충기,再사용 flush() 브라우저로 밀어 넣으십시오。</span></span><span>
</span><span><span class="hljs-comment">//</span></span><span>
</span><span><span class="hljs-comment">// 예:</span></span><span>
</span><span><span class="hljs-keyword">for</span></span><span> (</span><span><span class="hljs-variable">$i</span></span><span> = </span><span><span class="hljs-number">1</span></span><span>; </span><span><span class="hljs-variable">$i</span></span><span> <= </span><span><span class="hljs-number">5</span></span><span>; </span><span><span class="hljs-variable">$i</span></span><span>++) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"현재 진행 상황:1. <span class="hljs-subst">$i</span></span></span><span> 단계가 완료되었습니다...<br>";
</span><span><span class="hljs-title function_ invoke__">ob_flush</span></span><span>();
</span><span><span class="hljs-title function_ invoke__">flush</span></span><span>();
</span><span><span class="hljs-title function_ invoke__">sleep</span></span><span>(</span><span><span class="hljs-number">1</span></span><span>); </span><span><span class="hljs-comment">// 시뮬레이션 시간 소모 작업</span></span><span>
}
</span><span><span class="hljs-comment">// 3. 닫는 브라우저 및 서버 캐시의 영향</span></span><span>
</span><span><span class="hljs-comment">// 브라우저 및 서버의 캐시 메커니즘은 컨텐츠의 실시간 표시를 방해 할 수 있습니다.。</span></span><span>
</span><span><span class="hljs-comment">// 권장 설정 HTTP 헤드에서 캐시를 비활성화합니다:</span></span><span>
</span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">"Cache-Control: no-cache"</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">"Pragma: no-cache"</span></span><span>);
</span><span><span class="hljs-comment">// 4. 폐쇄 gzip 압축</span></span><span>
</span><span><span class="hljs-comment">// 서버가 활성화 된 경우 gzip 압축,flush() 가능한 실패,因为압축后内容必须完整才能解压。</span></span><span>
</span><span><span class="hljs-comment">// 可以尝试존재하다 PHP 配置或服务器配置가운데폐쇄 gzip,或者针对실시간 출력页面禁用。</span></span><span>
</span><span><span class="hljs-comment">// 5. 사용隐式刷新</span></span><span>
</span><span><span class="hljs-comment">// 통과하다 ini_set('implicit_flush', 1) 암시 적 새로 고침을 활성화 할 수 있습니다,PHP 존재하다每次输出后自动调用 flush()。</span></span><span>
</span><span><span class="hljs-comment">// 也可사용 ob_implicit_flush(true) 같은 효과를 얻으십시오。</span></span><span>
</span><span><span class="hljs-comment">// 6. 출력 형식 및 컨텐츠에주의하십시오</span></span><span>
</span><span><span class="hljs-comment">// 브라우저는 렌더링을 트리거하기에 충분한 컨텐츠가 필요합니다,충분히 출력하거나 일부 공간으로 채우는 것이 좋습니다.。</span></span><span>
</span><span><span class="hljs-comment">// 7. 实战예总结</span></span><span>
</span><span><span class="hljs-comment">// 결합上述方法,完整예如下:</span></span><span>
<span class="hljs-comment">/*
<?php
header("Content-Type: text/html; charset=utf-8");
header("Cache-Control: no-cache");
header("Pragma: no-cache");
ob_implicit_flush(true);
while (</span></span><span><span class="hljs-doctag">@ob</span></span><span>_end_flush()); // 폐쇄所有输出缓冲
for ($i = 1; $i <= 10; $i++) {
echo "일정:$i / 10<br>";
echo str_repeat(' ', 1024); // 출력을 작성하십시오,브라우저가 즉시 렌더링하도록 도와줍니다
flush();
sleep(1);
}
?>
*/
</span><span><span class="hljs-comment">// 통과하다以上方式,스크립트가 오랫동안 실행되는 동안 사용자의 대기 경험을 크게 향상시킬 수 있습니다.,실시간으로 콘텐츠 업데이트를 참조하십시오。</span></span><span>
</span><span><span class="hljs-comment">// 결론</span></span><span>
</span><span><span class="hljs-comment">// flush() 존재하다 PHP 实战가운데是一个非常实用的技巧,尤其适合일정显示、日志실시간 출력等场景。</span></span><span>
</span><span><span class="hljs-comment">// 그것이 어떻게 작동하는지 이해하십시오,서버를 올바르게 구성하십시오 PHP 설정,최대 효과를 얻는 것만으로 만。</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>