현재 위치: > 최신 기사 목록> OB_END_CLEAN과 OB_FLUSH 기능의 차이점은 무엇입니까? 언제 조합으로 사용해야합니까?

OB_END_CLEAN과 OB_FLUSH 기능의 차이점은 무엇입니까? 언제 조합으로 사용해야합니까?

gitbox 2025-06-23

OB_END_CLEAN과 OB_FLUSH 기능의 차이점은 무엇입니까? 언제 조합으로 사용해야합니까?

PHP에서 출력 버퍼는 브라우저에 전송 된 컨텐츠를 임시로 저장하는 중요한 개념입니다. PHP는 출력 버퍼의 동작을 제어하기위한 많은 기능을 제공하며, OB_END_CLEAN ()OB_FLUSH () 는 일반적으로 출력 버퍼를 청소하거나 플러시하는 데 사용되는 일반적으로 사용되는 두 가지 기능입니다. 비슷하게 보이지만 기능과 사용 시나리오는 분명히 다릅니다.

ob_end_clean () 함수

OB_END_CLEAN () 함수는 현재 출력 버퍼를 닫고 버퍼의 내용을 버리는 데 사용됩니다. 즉,이 기능을 호출 한 후에 버퍼의 내용이 폐기되고 페이지는 컨텐츠를 출력하지 않습니다. 버퍼가 브라우저에 표시되기를 원하지 않고 버퍼를 취소 해야하는 경우에는 일반적으로 사용됩니다.

시나리오 사용 :

  • 출력 컨텐츠를 수정하거나 처리해야하지만 현재 버퍼의 내용을 브라우저로 보내려면 OB_END_CLEAN ()을 사용할 수 있습니다.

  • 버퍼가 켜진 후 컨텐츠를 출력 할 필요가 없거나 특정 조건에 따라 출력 여부를 결정 해야하는 경우이 기능을 호출하여 버퍼를 지울 수 있습니다.

샘플 코드 :

 <span><span><span class="hljs-title function_ invoke__">ob_start</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">"This content will be discarded."</span></span><span>;  </span><span><span class="hljs-comment">// 캐시 컨텐츠</span></span><span>

</span><span><span class="hljs-title function_ invoke__">ob_end_clean</span></span><span>();  </span><span><span class="hljs-comment">// 버퍼 컨텐츠를 폐기하십시오,출력이 없습니다</span></span><span>

</span><span><span class="hljs-comment">// 위의 텍스트는 페이지에 표시되지 않습니다.</span></span><span>
</span></span>

ob_flush () 함수

OB_FLUSH () 함수는 현재 버퍼의 내용을 즉시 브라우저로 보내는 데 사용되지만 버퍼를 닫지 않습니다. 버퍼의 데이터를 클라이언트에 출력하면 버퍼가 여전히 존재하며 버퍼에 데이터를 계속 쓸 수 있습니다.

시나리오 사용 :

  • 처리 중에 버퍼의 브라우저에 버퍼의 데이터를 즉시 출력하려고하지만 버퍼를 유지하여 데이터를 계속 추가 할 수 있도록 OB_FLUSH ()를 사용할 수 있습니다.

  • OB_FLUSH ()는 종종 보고서 생성 또는 진행률 표시 줄 업데이트와 같은 실시간 출력 시나리오를 처리하는 데 사용됩니다.

샘플 코드 :

 <span><span><span class="hljs-title function_ invoke__">ob_start</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">"This content will be flushed to the browser."</span></span><span>;

</span><span><span class="hljs-title function_ invoke__">ob_flush</span></span><span>();  </span><span><span class="hljs-comment">// 버퍼를 새로 고칩니다,브라우저에 콘텐츠를 보내십시오</span></span><span>

</span><span><span class="hljs-comment">// 페이지는 위의 텍스트를 즉시 표시합니다,후속 컨텐츠는 여전히 버퍼링됩니다</span></span><span>
</span></span>

ob_end_clean ()과 ob_flush ()의 차이

OB_END_CLEAN ()OB_FLUSH () 는 출력 버퍼와 관련된 기능이지만 다르게 행동합니다.

  1. 버퍼 처리 :

    • OB_END_CLEAN ()은 버퍼의 모든 것을 버리고 버퍼를 닫습니다.

    • OB_FLUSH ()는 버퍼의 내용을 브라우저에 출력하지만 버퍼를 닫지 않습니다. 버퍼는 여전히 존재하며 내용을 계속 작성할 수 있습니다.

  2. 출력 결과 :

    • OB_END_CLEAN ()은 버퍼의 데이터를 지우기 때문에 아무것도 출력하지 않습니다.

    • OB_FLUSH ()는 현재 버퍼의 내용을 브라우저에 즉시 출력합니다.

언제 조합으로 사용해야합니까?

실제 개발에서 OB_END_CLEAN ()OB_FLUSH ()는 때때로 특정 요구를 충족시키기 위해 조합하여 사용됩니다. 예를 들어, 많은 양의 데이터 또는 동적 콘텐츠를 처리해야하고 적시에 사용자의 브라우저에 일부 컨텐츠를 출력하려면 일부 컨텐츠가 출력되기를 원하지 않으면 조합을 사용할 수 있습니다.

  1. 위상 출력 : 보고서를 생성하거나 큰 파일을 처리 할 때 OB_FLUSH ()를 사용하여 일부 컨텐츠를 새로 고칠 수 있으며 OB_END_CLEAN ()을 사용 하여 원치 않는 콘텐츠를 폐기 할 수 있습니다.

  2. 쓸모없는 콘텐츠 정리 : 출력 프로세스 중에 일부 컨텐츠가 기대치를 충족시키지 못하고 폐기 해야하는 경우 먼저 OB_FLUSH ()를 사용하여 준비된 콘텐츠를 출력 한 다음 OB_END_CLEAN ()을 사용하여 나머지 부분을 폐기 할 수 있습니다.

샘플 코드 :

 <span><span><span class="hljs-title function_ invoke__">ob_start</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">"This content will be flushed."</span></span><span>;

</span><span><span class="hljs-title function_ invoke__">ob_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-title function_ invoke__">ob_end_clean</span></span><span>();  </span><span><span class="hljs-comment">// 후속 원치 않는 버퍼 컨텐츠를 폐기하십시오</span></span><span>

</span><span><span class="hljs-comment">// 페이지가 표시됩니다“ This content will be flushed.”</span></span><span>
</span></span>

요약

  • OB_END_CLEAN ()은 출력 버퍼의 내용을 버리고 버퍼를 닫는 데 사용됩니다.

  • OB_FLUSH ()는 출력 버퍼의 콘텐츠를 브라우저로 플러시하는 데 사용되지만 버퍼를 닫지 않습니다.

개발에서 선택할 방법은 달성하려는 내용에 따라 다릅니다. 버퍼의 내용을 폐기 해야하는 경우 OB_END_CLEAN ()을 사용할 수 있습니다. 버퍼를 유지하고 콘텐츠를 브라우저에 출력하려면 OB_FLUSH ()를 사용할 수 있습니다. 일부 시나리오에서는보다 유연한 출력 제어를 위해 조합하여 사용할 수 있습니다.