개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.04.05 14:57

ob_flush 함수 사용 방법에 대한 질문

목록
  • 루트권한 2일 전 2025.04.05 14:57
  • 3
    1
제가 PHP에서 ob_flush 함수를 사용하여 출력 버퍼를 플러시하는 데 문제가 있습니다.

1. ob_start 함수를 호출하여 출력 버퍼를 시작합니다.
2. 데이터를 출력한 후 ob_flush 함수를 호출하여 버퍼를 플러시합니다.
3. 하지만 플러시된 데이터가 바로 브라우저에 출력되지 않고, 버퍼가 다시 채워지기까지 시간이 걸립니다.

ob_flush 함수를 호출했을 때 데이터가 바로 브라우저에 출력되지 않는 이유는 무엇이며, 이를 해결할 수 있는 방법은 무엇입니까?

    댓글목록

    profile_image
    나우호스팅  2일 전



    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

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 9,824건 / 15 페이지

검색

게시물 검색