PHP 개발에서 OB_START () 및 OB_END_FLUSH () 는 매우 실용적인 출력 버퍼링 기능입니다. 이 두 기능을 합리적으로 사용함으로써 개발자는 페이지 출력을보다 효율적으로 관리하고 성능을 최적화하며 캐시와 같은 작업을 처리 할 수 있습니다. 이 기사는이 두 기능의 사용 방법과 출력 버퍼링 메커니즘을 더 잘 이해하는 데 도움이되는 방법을 심층적으로 탐구합니다.
출력 버퍼링 메커니즘은 PHP 스크립트를 실행하는 동안 페이지의 컨텐츠 출력이 일시적으로 메모리에 저장된 다음 스크립트가 실행 된 후 브라우저로 균일하게 전송된다는 사실을 나타냅니다. 기본적으로 각 출력 컨텐츠 라인이 스크립트에 의해 실행될 때 즉시 PHP가 브라우저로 전송됩니다. 출력 버퍼링이 활성화되면 모든 출력이 버퍼에 먼저 저장되며 버퍼가 지워 지거나 닫힐 때까지 내용이 브라우저로 전송되지 않습니다.
OB_START ()는 출력 버퍼링을 시작하는 데 사용되는 기능입니다. 이 기능을 호출 한 후 모든 출력 컨텐츠 (예 : Echo , Print , HTML 태그 등)는 메모리로 캐시되며 즉시 브라우저로 전송되지 않습니다. 이는 컨텐츠 수정 및 페이지 출력 전에 출력 압축과 같은 후속 처리에 대한 유연성을 제공합니다.
샘플 코드 :
<span><span><span class="hljs-meta"><?php</span></span><span>
</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-comment">// 전화 할 때까지 ob_end_flush(),콘텐츠는 브라우저로 전송됩니다</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
OB_END_FLUSH () 는 현재 출력 버퍼를 닫고 버퍼의 내용을 브라우저로 전송하는 데 사용되는 기능입니다. 이 함수가 호출되면 PHP는 버퍼의 모든 데이터를 브라우저에 출력하고 버퍼링 메커니즘을 종료합니다. 출력 버퍼를 중간에 종료하고 내용물을 출력하려면이 기능을 사용할 수 있습니다.
샘플 코드 :
<span><span><span class="hljs-meta"><?php</span></span><span>
</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 content."</span></span><span>; </span><span><span class="hljs-comment">// 콘텐츠가 캐시됩니다</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_end_flush</span></span><span>(); </span><span><span class="hljs-comment">// 버퍼링 및 출력을 끕니다</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
OB_START () 및 OB_END_FLUSH () 의 조합은 출력 버퍼링의 핵심입니다. 이 두 기능의 협력을 통해 개발자는보다 효율적인 컨텐츠 관리를 달성 할 수 있습니다. 예를 들어, 많은 양의 출력이 필요한 경우에, 출력은 메모리에 캐시 된 다음 빈번한 I/O 작동을 피하고 페이지 로딩 속도를 향상시키기 위해 한 번에 발송 될 수 있습니다.
OB_END_FLUSH ()를 호출하기 전에 버퍼의 내용을 수정하고 변경할 수 있습니다. 이는 컨텐츠를 동적으로 생성하고 출력 최적화에 매우 유용합니다.
샘플 코드 :
<span><span><span class="hljs-meta"><?php</span></span><span>
</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">"Original content"</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-comment">// 컨텐츠 수정을합니다</span></span><span>
</span><span><span class="hljs-variable">$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">$content</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">$content</span></span><span>; </span><span><span class="hljs-comment">// 수정 된 컨텐츠를 출력하십시오</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
출력 버퍼링은 컨텐츠 수정뿐만 아니라 다른 최적화 목적으로도 사용할 수 있습니다. 예를 들어, 페이지 출력을 압축, 데이터로드 지연 또는 캐시 된 컨텐츠의 전송을 제어하는 등의 일반적인 사용 시나리오는 다음과 같습니다.
스크립트가 완료된 후 한 번에 모든 것을 출력 해야하는 경우 OB_START ()를 사용하여 스크립트가 실행될 때까지 출력을 버퍼링 할 수 있습니다.
<span><span><span class="hljs-meta"><?php</span></span><span>
</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 will be sent after all tasks are complete."</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">ob_end_flush</span></span><span>(); </span><span><span class="hljs-comment">// 모든 작업이 완료된 후 통합 출력</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
출력 버퍼링 및 압축 기술의 조합은 데이터 전송 크기를 효과적으로 줄이고 로딩 속도를 향상시킬 수 있습니다. 출력 버퍼링을 활성화 한 후 PHP의 OB_START () 및 OB_GZHANDLER 기능을 사용하여 페이지 압축을 수행 할 수 있습니다.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>(</span><span><span class="hljs-string">"ob_gzhandler"</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 a compressed page!"</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">ob_end_flush</span></span><span>(); </span><span><span class="hljs-comment">// 출력 압축 콘텐츠</span></span><span>
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
매우 복잡하거나 동적으로 생성 된 컨텐츠를 출력 해야하는 경우 출력 버퍼를 사용하여 처리 중에 브라우저에 여러 출력을 보내지 않아도됩니다.
OB_START () 및 OB_END_FLUSH () 는 PHP 출력 버퍼링 메커니즘에서 두 가지 매우 중요한 기능입니다. 개발자가 페이지 출력을보다 효율적으로 관리하고 성능을 최적화하며 불필요한 I/O 운영을 줄일 수 있습니다. 합리적인 협력을 통해 웹 사이트의 응답 속도 및 사용자 경험을 향상시키기 위해 컨텐츠 수정, 페이지 압축, 지연된 출력 등과 같은 다양한 기능을 실현할 수 있습니다. 개발 과정 에서이 두 기능을 유연하게 사용하면 대규모 출력을 처리 할 때 더 편안하게 만들 수 있습니다.