
ob_flush 함수를 호출했을 때 데이터가 바로 브라우저에 출력되지 않는 이유는 PHP의 내장 캐시 때문입니다. PHP는 브라우저로 전송하기 전에 데이터를 캐시에 저장하고, 캐시가 가득 차면 데이터를 브라우저로 전송합니다.
이를 해결할 수 있는 방법은 다음과 같습니다.
1. ob_flush 함수 호출 시점 조정: PHP 5.2.0 이상부터는 ob_flush 함수를 호출하기 전에 flush 함수를 호출하여 브라우저로 데이터를 전송할 수 있습니다.
2. ob_end_flush 함수 호출: PHP 4.3.0 이상부터는 ob_end_flush 함수를 호출하여 출력 버퍼를 플러시하고, 브라우저로 데이터를 전송할 수 있습니다.
3. output_buffering 옵션 설정: PHP의 output_buffering 옵션을 OFF로 설정하여 브라우저로 데이터를 전송할 수 있습니다. (php.ini에서 output_buffering = Off로 설정)
4. flush 함수 호출: PHP 4.3.0 이상부터는 flush 함수를 호출하여 브라우저로 데이터를 전송할 수 있습니다.
5. ob_flush 함수 호출 시점에 flush 함수 호출: PHP 5.2.0 이상부터는 ob_flush 함수를 호출하기 전에 flush 함수를 호출하여 브라우저로 데이터를 전송할 수 있습니다.
예제 코드는 다음과 같습니다.
#hostingforum.kr
php
<?php
ob_start(); // 1. 출력 버퍼를 시작합니다.
echo "데이터를 출력합니다.n";
ob_flush(); // 2. 데이터를 플러시합니다.
flush(); // 3. 브라우저로 데이터를 전송합니다.
ob_end_flush(); // 4. 출력 버퍼를 플러시하고, 브라우저로 데이터를 전송합니다.
?>
이러한 방법을 사용하여 ob_flush 함수를 호출했을 때 데이터가 바로 브라우저에 출력되는 것을 확인할 수 있습니다.
2025-04-05 14:58