output_buffering = 512000 ; ## maximun of 500 KByes buffer size
or
php_value output_buffering 512000
-----------------------
ob_start();
...(1)
...(2)
ob_end_flush(); // 버퍼링 끝
(1)+(2)의 내용을 버퍼링하면서 출력함(flush, send)
버퍼링 크기를 넘어서면 echo 나 print와 동일함,
따라서 ob_end_flush() 앞쪽에 header() 함수를 놓아야 함.
버퍼링한 크기 > 설정한 최대버퍼링크기 : 헤더에 상관없이 바로 출력함
버퍼링한 크기 < 설정한 최대버퍼링크기 : 헤더를 보내고 출력함
------------------------
ob_start();
...(1)
...(2)
$contents = ob_get_contents();
ob_end_clean(); // 버퍼링끝
echo $contents; // 출력
(1)+(2)의 내용을 버퍼링하여 그 내용을 출력(send)하지 않고,
$contents 변수에 담아둠.
버퍼링 크기를 넘어서면 echo 나 print 하지 않고 $contents 변수에
추가됨.
따라서 반드시 ob_end_clean() 함수 앞이 header() 함수를 놓을 필요는
없음.
버러링이 끝나면 자동으로 버퍼는 지워짐(clean)
------------------------
사용예 ob_end_flush()
------------------------
(1) <--------- header()
ob_start();
...
echo ...;
...
echo ...;
(2) <--------- header()
ob_end_flush();
(3) <--------- header()
버퍼크기에 상관없이 (1) 또는 (2)에 header() 함수를 위치시키면
버퍼링하면서 에러없이 출력함.
반면,
(3)에 header() 함수를 위치시켜면 에러날 확률이 있음.
버퍼링한 크기 > 설정한 최대버퍼링크기 : error
버퍼링한 크기 < 설정한 최대버퍼링크기 : ok
------------------------
사용예 ob_end_clean()
------------------------
(1) <--------- header()
ob_start();
...
echo ...;
...
echo ...;
$contents = ob_get_contents();
(2) <--------- header()
ob_end_clean();
(3) <--------- header()
...
(4) <--------- echo $contents
header() 함수는 (1), (2), (3) 어느 위치에 있어도 상관없음.
다만,
(4) 위치 앞에 있어야 함.
버퍼링한 크기 > 설정한 최대버퍼링크기 : $contents 변수에 추가됨
버퍼링한 크기 < 설정한 최대버퍼링크기 : $contents 변수에 담음 |