downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

ob_flush> <ob_end_clean
Last updated: Fri, 24 Jul 2009

view this page in

ob_end_flush

(PHP 4, PHP 5)

ob_end_flush출력 버퍼를 전송하고 출력 버퍼링을 종료

설명

bool ob_end_flush ( void )

이 함수는 (존재한다면) 최상위 출력 버퍼의 내용을 전송하고 출력 버퍼를 종료합니다. ob_end_flush()를 호출하면 버퍼의 내용이 비워지기 때문에, 버퍼의 내용으로 다른 작업을 하려면 ob_end_flush()를 호출하기 전에 ob_get_contents()를 호출해야 합니다.

Note: 이 함수는 ob_get_flush()가 버퍼를 문자열로 반환하는 점을 제외하면, ob_get_flush()와 동일합니다.

반환값

성공할 경우 TRUE를, 실패할 경우 FALSE를 반환합니다. 실패하는 경우는 활성화된 버퍼가 없는 상태에서 호출하거나 버퍼를 지울 수 없는 경우(특수 버퍼일 경우)입니다.

오류/예외

함수가 실패하면 E_NOTICE가 발생합니다.

변경점

버전 설명
4.2.0 논리 반환값 추가.

예제

Example #1 ob_end_flush() 예제

다음 예제는 모든 출력 버퍼를 전송 및 종료하는 간단한 방법을 보여줍니다:

<?php
  
while (@ob_end_flush());
?>

참고



ob_flush> <ob_end_clean
Last updated: Fri, 24 Jul 2009
 
add a note add a note User Contributed Notes
ob_end_flush
skippy at zuavra dot net
01-Jul-2005 09:10
Apart from being mostly redundant, ob_end_flush() can be downright damaging in some weird cases.

Actual example: a particular page on an Intranet website which would appear blank on Internet Explorer 6 when ob_start('ob_gzhandler') was called in the beginning and ob_end_flush() at the end.

We couldn't figure out what made that page special no matter what we tried. The ob_ functions were placed in scripts which were include()'d by all pages just the same, but only that page did this.

Even stranger, the problem only appeared on direct browser/server connections. Whenever the connection passed through a proxy the problem dissapeared. I'm guessing some kind of HTTP encoding headers mumbo-jumbo.

Solution: unless you really need it in particular cases, remove the ob_end_flush() call and rely on the builtin, automatic buffer flush.
jhannus at 128kb dot com
05-Jun-2004 04:18
A note on the above example...

with PHP 4 >= 4.2.0, PHP 5 you can use a combination of ob_get_level() and ob_end_flush() to avoid using the @ (error suppresion) which should probably be a little faaster.

<?php

while (ob_get_level() > 0) {
   
ob_end_flush();
}

?>
kriek at jonkriek dot com
29-Mar-2003 05:22
ob_end_flush() isn't needed in MOST cases because it is called automatically at the end of script execution by PHP itself when output buffering is turned on either in the php.ini or by calling ob_start().
brett at realestate-school dot com
26-Sep-2002 08:01
It appears that you can call ob_end_flush() regardless of whether or not output buffering was ever started using ob_start(). This can prove useful because it saves you from having to create conditional statements based on whether a particular function or include file has started output buffering. You can simply call the ob_end_flush() anyway and if there's output in the buffer, it will be sent, otherwise your script will just keep on keepin' on.

ob_flush> <ob_end_clean
Last updated: Fri, 24 Jul 2009
 
 
show source | credits | stats | sitemap | contact | advertising | mirror sites