PHP 출력 버퍼링 함수란
PHP의 좋은 점 중 하나는 PHP의 모든 출력을 버퍼에 담을 수 있다는 점입니다. 즉 출력이 직접 그 내용을 전송하기 전까지 브라우저로 전송되지 않게 할 수 있습니다. 이 함수는 header()나 setcookie()함수와 같이 내용이 전송되기 전에 호출되어야 하는 함수와 같이 사용됩니다. 출력 버퍼링 함수는 완전 동기 함수기때문에 출력 버퍼링이 종료되기전까지 다른 모든 작업이 중지되고, 출력 버퍼링 작업의 완료를 기다립니다.
ob_start()
버퍼링을 시작하는 이 함수는 PHP 실행기에게 (헤더를 제외한) 스크립트의 모든 출력을 내부 버퍼에 저장하고, 브라우저에게는 전송하지 않습니다.
ob_get_contents()
이 함수는 내부 버퍼의 내용을 문자열로 리턴해 줍니다. 이 함수를 사용해서 버퍼에 축적된 출력을 (출력 버퍼링이 end된 다음에) 읽어올 수 있습니다.
ob_get_length()
버퍼에 축적된 내용의 길이를 리턴합니다.
ob_end_clean()
출력 버퍼를 지우고 출력 버퍼링을 종료합니다. ob_end_clean()를 호출하면 버퍼 내용은 버려지기 때문에, 버퍼의 내용으로 다른 작업을 하기 위해서는 ob_end_clean()를 호출하기 전에 ob_get_contents()를 호출해야 합니다.
ob_end_flush()
출력 버퍼를 플러시(전송)하고 출력 버퍼링을 끕니다. ob_end_flush()를 호출하면 버퍼의 내용이 비워지기 때문에, 버퍼의 내용으로 다른 작업을 하려면 ob_end_flush()를 호출하기 전에 ob_get_contents()를 호출해야 합니다.
ob_get_flush()
ob_end_flush()와 동일하지만, 출력 버퍼를 문자열로 플러시(전송)합니다.
- 참고
Output Control 함수 목록(http://www.lug.or.kr/files/docs/PHP/ref.outcontrol.html)
PHP 출력 제어하기(https://naearu.tistory.com/2982937)