PHP 매뉴얼
이전 |  | 다음

# LXXVIII. 출력 제어 함수

# 소개

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

# 요구 사항

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

# 설치

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

# 런타임 설정

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

표 1. 출력 제어 설정 옵션

이름 | 기본값 | 변경가능성
--- | --- | ---
output_buffering | "0" | PHP_INI_PERDIR|PHP_INI_SYSTEM
output_handler | NULL | PHP_INI_PERDIR|PHP_INI_SYSTEM
implicit_flush | "0" | PHP_INI_PERDIR|PHP_INI_SYSTEM

PHP_INI_* 상수에 대한 자세한 내용 및 정의는 ini_set()을 참고하십시오

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

`output_buffering` boolean/integer

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

`output_handler` string

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

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

`implicit_flush` boolean

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

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

  참고: ob_implicit_flush().

# 리소스 종류

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

# 상수 정의

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

# 예제

예 1. 출력 제어 예제

`<?php ob_start(); echo "Hello\n"; setcookie("cookiename", "cookiedata"); ob_end_flush(); ?>`

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

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

# 참고

참고: header(), setcookie().

이전 | 처음으로 | 다음
ovrimos_rollback | 위로 | flush