Forum und email

출력 제어 함수

소개

출력 제어 함수는 스크립트의 출력 전송을 제어할 수 있도록 합니다. 이는 여러 상황에서, 특히 스크립트가 브라우저로 데이터를 출력한 뒤에 헤더를 전송할 필요가 있을 경우에 유용합니다. 출력 제어 함수는 header()setcookie()를 사용하는 헤더 전송에는 영향을 주지 않으며, echo() 등의 함수나 PHP 코드 블럭 사이의 데이터에만 적용됩니다.

요구 조건

이 확장을 빌드할 때 외부 라이브러리가 필요하지 않습니다.

설치

이 함수들은 설치하지 않아도 사용할 수 있습니다; PHP 코어의 일부입니다.

실행시 설정

이 함수의 작동은 php.ini 설정에 영향을 받습니다.

출력 제어 설정 옵션
이름 기본값 설정권한 변경점
output_buffering "0" PHP_INI_PERDIR  
output_handler NULL PHP_INI_PERDIR PHP 4.0.4부터 사용할 수 있습니다.
implicit_flush "0" PHP_INI_ALL PHP <= 4.2.3에서는 PHP_INI_PERDIR입니다.
PHP_INI_* 상수에 대한 자세한 상세와 정의는 php.ini directives를 참고하십시오.

위 설정 지시어에 대한 간단한 설명입니다.

output_buffering boolean/integer

이 지시어를 'On'으로 설정하여 모든 파일에 출력 버퍼링을 활성화 할 수 있습니다. 버퍼의 크기를 제한하려면 이 지시어의 값으로 'On' 대신 최대 바이트 수를 사용하십시오. (예. output_buffering=4096) PHP 4.3.5부터 PHP-CLI에서는 이 지시어가 항상 Off입니다.

output_handler string

스크립트의 모든 출력을 어떤 함수를 통하게 할 수 있습니다. 예를 들면, output_handler를 mb_output_handler()로 설정하면, 문자 인코딩을 지정한 인코딩으로 변경할 수 있습니다. 출력 핸들러 설정은 자동적으로 출력 버퍼링을 켭니다.

Note: mb_output_hadler()ob_iconv_handler()를 동시에 사용할 수 없고, ob_gzhandler()zlib.output_compression도 동시에 사용할 수 없습니다.

Note: 이 지시어로는 내장 함수만 사용할 수 있습니다. 사용자 정의 함수에 대해서는 ob_start()를 사용하십시오.

implicit_flush boolean

기본값으로 FALSE입니다. TRUE로 변경하면 PHP가 모든 출력 블럭 뒤에 바로 전송하도록 출력 레이어를 설정합니다. 이는 PHP 함수 flush()를 모든 printf(), echo(), HTML 블럭 뒤에 호출하는 것과 동일합니다.

PHP를 웹 환경에서 사용할 때, 이 옵션을 켜는 것은 심각한 성능 저하를 일으킵니다. 일반적으로 디버깅 목적으로만 사용할 것을 권장합니다. CLI SAPI에서는 기본값으로 TRUE입니다.

참고: ob_implicit_flush().

자원형

이 확장은 리소스형을 정의하지 않습니다.

예약 상수

이 확장은 상수를 정의하지 않습니다.

예제

Example#1 출력 제어 예제

<?php

ob_start
();
echo 
"Hello\n";

setcookie("cookiename""cookiedata");

ob_end_flush();

?>

위 예제에서, echo()의 출력은 ob_end_flush()를 호출할 때까지 출력 버퍼에 저장됩니다. 그리하여 setcookie() 호출은 에러를 발생하지 않고 성공적으로 쿠키를 저장합니다. (보통은 브라우저로 데이터를 전송한 뒤에 헤더를 전송할 수 없습니다)

Note: PHP 4.1(과 4.2)에서 4.3으로 업그레이드 할 때 이전 버전의 버그로 인해, php.ini에서 implict_flushOFF인지 확인해야만 합니다. 그렇지 않으면 ob_start()는 어떠한 출력도 숨기지 못합니다.

참고

참고: header(), setcookie().

Table of Contents