현재 위치: > 최신 기사 목록> OB_START 및 OB_END_CLEAN의 일반적인 사용법과 주요 차이점은 무엇입니까?

OB_START 및 OB_END_CLEAN의 일반적인 사용법과 주요 차이점은 무엇입니까?

gitbox 2025-09-18

[OB_START 및 OB_END_CLEAN의 일반적인 사용법과 주요 차이점은 무엇입니까? ]]

PHP에서 OB_STARTOB_END_CLEAN 은 두 가지 매우 유용한 출력 버퍼 작동 기능입니다. 그들은 종종 스크립트 출력을 제어하는 ​​데 사용되며 브라우저에 데이터를 직접 출력하는 것을 피하고 출력시기를 결정할 때까지 메모리로 캐시합니다. 이는 성능 최적화, 컨텐츠 처리 또는 페이지 헤더에서 HTTP 헤더를 전송하는 데 특히 유용합니다.

출력 버퍼 란 무엇입니까?

PHP의 출력 버퍼링 메커니즘을 통해 브라우저로 직접 보내지 않고 메모리의 버퍼에 스크립트 출력 (예 : HTML, JavaScript 또는 일반 텍스트)을 저장할 수 있습니다. 출력 버퍼링을 사용하면 페이지가 출력을 보내기 전에 더 미세한 제어를 수행 할 수 있습니다. 이것은 출력을 조작하거나 수정 해야하는 일부 시나리오에 매우 유용합니다.

OB_START 의 역할

OB_START 기능은 출력 버퍼를 시작하는 데 사용됩니다. OB_START ()가 호출되면 PHP는 캐시 출력을 브라우저로 직접 전송하는 대신 출력을 시작합니다.

문법:

 <span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>();
</span></span>

OB_START ()를 호출 한 후 모든 출력 컨텐츠는 브라우저에 즉시 표시되는 대신 내부 버퍼에 저장됩니다. 현재 캐시 된 컨텐츠 수정 또는 캐시 된 컨텐츠를 파일 또는 데이터베이스로 전송하는 등 일부 처리를 수행 할 수 있습니다.

예:

 <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">"Hello, world!"</span></span><span>;  </span><span><span class="hljs-comment">// 출력 내용이 즉시 표시되지 않습니다</span></span><span>
</span><span><span class="hljs-variable">$content</span></span><span> = </span><span><span class="hljs-title function_ invoke__">ob_get_contents</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-keyword">echo</span></span><span> </span><span><span class="hljs-string">"The buffered content: "</span></span><span> . </span><span><span class="hljs-variable">$content</span></span><span>;  </span><span><span class="hljs-comment">// 산출 "The buffered content: Hello, world!"</span></span><span>
</span></span>

위의 예에서는 OB_START ()가 버퍼를 시작하고 ECHO를 통한 모든 컨텐츠 출력이 일시적으로 캐시됩니다. 그런 다음 OB_GET_CONTENTS () 함수는 버퍼의 내용을 가져오고 OB_END_CLEAN ()을 호출 한 후 버퍼를 청소합니다.

OB_END_CLEAN 의 역할

OB_END_CLEAN은 현재 출력 버퍼를 닫고 버퍼의 내용을 지우는 데 사용됩니다. 즉, 브라우저로 전송하는 대신 현재 버퍼의 모든 출력을 폐기합니다.

문법:

 <span><span><span class="hljs-title function_ invoke__">ob_end_clean</span></span><span>();
</span></span>

이 함수는 일반적으로 버퍼의 내용을 얻거나 조작 한 후 버퍼를 청소하는 데 OB_START () 와 함께 사용됩니다.

예:

 <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 is buffered."</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_STARTOB_END_CLEAN 의 주요 차이점

  • OB_START는 출력 버퍼를 시작하고 버퍼의 후속 출력을 일시적으로 저장하는 데 사용됩니다.

  • OB_END_CLEAN은 현재 출력 버퍼를 닫고 브라우저에 아무것도 출력하지 않고 버퍼의 모든 컨텐츠를 지우는 데 사용됩니다.

이 두 기능의 조합을 사용하면 출력을 보내지 않고 HTTP 헤더 정보를 수정하거나 페이지를로드 할 때 특정 출력 처리를 수행하는 등 출력 컨텐츠를 유연하게 제어 할 수 있습니다.

일반적인 사용법

  1. HTTP 헤더 정보를 보내기 전에 출력을 수정하십시오 <br> 출력 버퍼의 내용이 지워 지거나 전송 된 후에 만 ​​HTTP 헤더가 전송 될 수 있기 때문에 출력 버퍼링을 사용하여 PHP의 "헤더 이미 전송 된"오류를 피하는 데 사용할 수 있습니다. 스크립트가 시작되기 전에 사용자 정의 HTTP 헤더를 보내야하는 경우 OB_START ()를 사용할 수 있습니다.

     <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-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">"Location: http://example.com"</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>
  2. 캐시 페이지 컨텐츠 <br> 일부 성능 최적화 시나리오에서 캐시 페이지의 출력은 후속 요청의 응답 시간을 크게 줄일 수 있습니다. 예를 들어, 출력 버퍼 컨텐츠는 파일에 저장되어 데이터베이스 쿼리 작업이 중복되지 않도록 할 수 있습니다.

     <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">include</span></span><span>(</span><span><span class="hljs-string">"content.php"</span></span><span>);  </span><span><span class="hljs-comment">// 生成산출</span></span><span>
    </span><span><span class="hljs-variable">$content</span></span><span> = </span><span><span class="hljs-title function_ invoke__">ob_get_contents</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-title function_ invoke__">file_put_contents</span></span><span>(</span><span><span class="hljs-string">"cached_page.html"</span></span><span>, </span><span><span class="hljs-variable">$content</span></span><span>);  </span><span><span class="hljs-comment">// 캐시 된 내용을 파일에 저장하십시오</span></span><span>
    </span></span>
  3. 내용 수정 또는 리디렉션 <br> 생성 된 HTML 컨텐츠를 수정하거나 리디렉션 해야하는 경우 출력 버퍼도 매우 편리합니다. 예를 들어 OB_GET_CONTENTS () 를 통해 버퍼 내용을 가져온 다음 필요에 따라 수정할 수 있습니다.

     <span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>();
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Hello, this is the original content!"</span></span><span>;
    </span><span><span class="hljs-variable">$buffer</span></span><span> = </span><span><span class="hljs-title function_ invoke__">ob_get_contents</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-variable">$modified_content</span></span><span> = </span><span><span class="hljs-title function_ invoke__">str_replace</span></span><span>(</span><span><span class="hljs-string">"original"</span></span><span>, </span><span><span class="hljs-string">"modified"</span></span><span>, </span><span><span class="hljs-variable">$buffer</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-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$modified_content</span></span><span>;  </span><span><span class="hljs-comment">// 산출修改后的内容</span></span><span>
    </span></span>

요약

OB_STARTOB_END_CLEAN 은 PHP의 강력한 출력 버퍼링 도구로 유연한 출력 제어를 제공하여 개발자가 출력을 보내기 전에 출력 컨텐츠를 수정, 캐시 또는 버릴 수 있습니다. 이 두 기능을 적절하게 사용하면 HTTP 헤더 오류, 출력 컨텐츠의 조기 표시 또는 성능을 최적화 할 때 불필요한 계산을 줄이는 것과 같은 몇 가지 일반적인 문제를 효과적으로 피할 수 있습니다.