현재 위치: > 최신 기사 목록> OB_FLUSH를 사용하여 PHP 실시간 데이터 출력을 최적화하여 웹 페이지를 더 부드럽고 덜 느리게 만듭니다.

OB_FLUSH를 사용하여 PHP 실시간 데이터 출력을 최적화하여 웹 페이지를 더 부드럽고 덜 느리게 만듭니다.

gitbox 2025-09-01

PHP 응용 프로그램, 특히 라이브 브로드 캐스트, 라이브 채팅, 모니터링 시스템 또는 동적 데이터 업데이트와 같은 실시간 데이터 흐름과 관련된 시나리오를 개발할 때는 종종 사용자 경험을 보장하기 위해 웹 페이지의 응답 속도를 개선해야합니다. 기본적으로 PHP는 모든 데이터를 출력 한 후에 만 ​​브라우저로 전송되므로 특히 데이터 볼륨이 크거나 실시간 성능이 강한 경우 웹 페이지가 느리게로드 될 수 있습니다. 이를 최적화하기 위해 OB_FLUSH 기능을 사용하여 즉각적인 출력을 달성하고 대기 시간을 줄이며 웹 페이지의 평활도를 향상시킬 수 있습니다.

OB_FLUSH 란 무엇입니까?

OB_FLUSH () 는 PHP의 출력 버퍼 제어 기능입니다. 출력 버퍼의 내용을 플러시하고 스크립트를 보내기 전에 스크립트가 실행될 때까지 대기하지 않고 버퍼의 데이터를 브라우저로 강제하는 데 사용됩니다. 일반적으로 PHP는 모든 출력이 버퍼에 기본 모드에 저장되며 스크립트가 실행 된 후 브라우저로 전송됩니다. 이 메커니즘은 성능을 향상시킬 수 있지만 실시간 출력이 필요한 시나리오에서는 불필요한 지연이 생성 될 수 있습니다.

OB_FLUSH ()를 사용하면 버퍼의 데이터가 브라우저로 전송 될 때 수동으로 제어하여 실시간 새로 고침 및 사용자 경험을 향상시킬 수 있습니다.

OB_FLUSH를 사용하는 방법?

OB_FLUSH를 사용할 수 있으려면 먼저 출력 버퍼링이 활성화되어 있는지 확인해야합니다. 출력 버퍼는 OB_START () 로 시작한 다음 OB_FLUSH ()를 통해 실시간으로 출력 할 수 있습니다. 일반적인 프로세스는 다음과 같습니다.

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// 출력 버퍼링을 시작하십시오</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">"데이터로드...&lt;br&gt;"</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__">sleep</span></span><span>(</span><span><span class="hljs-number">2</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">"로딩 진행: 50%&lt;br&gt;"</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-title function_ invoke__">sleep</span></span><span>(</span><span><span class="hljs-number">2</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">"로딩이 완료되었습니다!&lt;br&gt;"</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_flush</span></span><span>();
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

위의 코드에서 OB_START ()는 출력 버퍼링 메커니즘을 시작합니다. OB_FLUSH ()가 호출 될 때마다 버퍼의 데이터가 즉시 브라우저로 전송됩니다. Sleep () 함수는 로딩 중 지연을 시뮬레이션합니다. 이러한 방식으로 브라우저는 결과를 표시하기 전에 스크립트가 실행될 때까지 기다리지 않고 각 단계의 진행 상황을 실시간으로 표시 할 수 있습니다.

OB_FLUSH의 실제 응용 시나리오

1. 실시간 데이터 모니터링

예를 들어, 모니터링 시스템에서는 특정 주요 메트릭을 실시간으로 표시해야 할 수도 있습니다 (예 : CPU 사용, 메모리 사용량 등). OB_FLUSH ()를 사용하면 지연이나 지연없이 업데이트 될 때이 데이터가 즉시 사용자에게 제시되도록 할 수 있습니다.

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</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">"시스템 실시간 데이터를 모니터링합니다&lt;br&gt;"</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">0</span></span><span>; </span><span><span class="hljs-variable">$i</span></span><span> &lt; </span><span><span class="hljs-number">100</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">"현재 데이터:<span class="hljs-subst">{$i}</span></span></span><span>%&lt;br&gt;";
    </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-comment">// 데이터를 브라우저로 추가로 전송합니다</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-title function_ invoke__">ob_end_flush</span></span><span>();
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

2. 라이브 채팅 시스템

라이브 채팅 응용 프로그램에서는 사용자의 메시지를 다른 사용자에게 즉시 표시해야합니다. OB_FLUSH ()를 사용하면 정보 전송의 적시성을 보장하기 위해 메시지를 전송 한 직후 브라우저 디스플레이를 새로 고칠 수 있습니다.

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>();
</span><span><span class="hljs-keyword">while</span></span><span> (</span><span><span class="hljs-literal">true</span></span><span>) {
    </span><span><span class="hljs-variable">$message</span></span><span> = </span><span><span class="hljs-string">"새로운 뉴스:"</span></span><span> . </span><span><span class="hljs-title function_ invoke__">rand</span></span><span>(</span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-number">100</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">$message</span></span><span> . </span><span><span class="hljs-string">"&lt;br&gt;"</span></span><span>;
    </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">2</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-meta">?&gt;</span></span><span>
</span></span>

3. 라이브 스트리밍

라이브 브로드 캐스트 애플리케이션에서는 비디오 프레임 및 실시간 데이터 (예 : 시청자 수, 좋아요 수 등)를 적시에 업데이트해야합니다. OB_FLUSH () 를 통해 브라우저가 모든 데이터 전송이 완료되기를 기다리지 않고 사용자 경험을 향상시키기 위해 세그먼트에 표시 할 수 있습니다.

OB_FLUSH를 사용할 때 메모

OB_FLUSH ()는 웹 페이지의 실시간 출력 성능을 크게 향상시킬 수 있지만 명심해야 할 몇 가지 메모가 있습니다.

  1. 브라우저 캐싱 : 브라우저는 콘텐츠를 캐시하여 일부 컨텐츠가 즉시 표시되지 않습니다. 캐시는 flush ()ob_flush () 를 통해 새로 고침해야합니다.

  2. 성능 영향 : 빈번한 새로 고침은 특히 많은 동시 요청이있을 때 서버에 추가 부담을 줄 수 있습니다. 실제 시나리오에 따라 합리적으로 사용해야합니다.

  3. 호환성 문제 : 모든 웹 서버 및 브라우저가 즉각적인 새로 고침을 지원하는 것은 아닙니다. 호환성을 보장하려면 테스트가 필요합니다.

  4. 클라이언트 캐시 : 일부 브라우저는 여전히 출력 컨텐츠를 캐시 할 수 있습니다. 현재 캐시 제어 : 캐시를 비활성화하기 위해 캐시 제어와 같은 적절한 HTTP 헤더를 사용해야합니다.

요약

OB_FLUSH () 및 출력 버퍼링 메커니즘을 통해 PHP의 실시간 데이터 출력을 최적화하여로드하는 동안 웹 페이지를 더 매끄럽게 만들어 지연 또는 대규모 데이터 전송으로 인한 지연 문제를 피할 수 있습니다. 실시간 데이터 모니터링, 채팅 시스템 또는 라이브 브로드 캐스트 애플리케이션에서 OB_FLUSH () 의 합리적인 사용은 사용자 경험을 크게 향상시킬 수 있습니다. 그러나이를 사용할 때는 서버 성능 및 브라우저 호환성도 자주 새로 고침으로 인한 리소스 폐기물 또는 성능 문제를 피하기 위해 고려해야합니다.