현재 위치: > 최신 기사 목록> OB_LIST_HANDLERS를 사용하여 여러 캐시 처리기를보고 관리합니다

OB_LIST_HANDLERS를 사용하여 여러 캐시 처리기를보고 관리합니다

gitbox 2025-05-28

PHP에서 OB_LIST_HANDLERS 기능을 사용하면 현재 사용 가능한 출력 버퍼 처리기를 볼 수 있습니다. 출력 버퍼링은 PHP의 기능으로 스크립트 출력을 즉시 브라우저로 보내지 않고 메모리에 스크립트 출력을 일시적으로 저장할 수 있습니다. 이렇게하면 출력을 처리하거나 수정하고 최종적으로 브라우저로 전송되기 전에 작동 할 수 있습니다.

이 기사에서는 OB_LIST_HANDLERS 기능을 사용하여 PHP에서 여러 캐시 핸들러를보고 관리하는 방법을 설명합니다.

1. OB_LIST_HANDLERS 기능의 개요

OB_LIST_HANDLERS 기능은 현재 활성 출력 버퍼 핸들러를 나열하는 데 사용됩니다. 출력 버퍼 핸들러는 OB_START ()가 호출 될 때 설정된 기능이며 버퍼가 닫히면 실행됩니다.

함수 구문 :

 ob_list_handlers(): array

이 함수는 등록 된 모든 출력 버퍼 핸들러 이름을 포함하는 배열을 반환합니다.

2. OB_LIST_HANDLERS를 사용하여 버퍼 핸들러를 보는 방법

먼저, OB_LIST_HANDLERS를 사용하여 현재 활성화 된 모든 출력 버퍼링 핸들러를 보는 방법을 보여주는 간단한 예를 살펴 보겠습니다.

 <?php
// 출력 버퍼링을 시작하십시오
ob_start(function($buffer) {
    // 출력 버퍼의 끝에,출력 컨텐츠를 수정하십시오
    return strtoupper($buffer);
});

// 일부 내용을 출력하십시오
echo "Hello, World!";

// 사용 ob_list_handlers 모든 출력 버퍼 처리기를보십시오
$handlers = ob_list_handlers();

// 출력 처리기 목록
print_r($handlers);
?>

산출:

 Array
(
    [0] => default output handler
    [1] => user-defined callback handler
)

이 예에서는 먼저 OB_START를 사용하여 버퍼를 시작하고 모든 출력을 대문자로 변환하는 콜백 함수를 지정합니다. 다음으로 OB_LIST_HANDLERS 에 전화하여 현재 등록 된 모든 버퍼 핸들러를 볼 수 있습니다. 최종 출력은 기본 핸들러와 사용자 정의 콜백 함수를 보여줍니다.

3. 여러 버퍼 처리기를 관리하는 방법

3.1 출력 버퍼링 프로그램을 닫습니다

더 이상 출력 버퍼 핸들러가 필요하지 않은 경우 OB_END_FLUSH 또는 OB_END_CLEAN을 사용하여 현재 버퍼를 닫을 수 있습니다.

  • OB_END_FLUSH ()는 버퍼의 내용을 브라우저에 출력하고 버퍼를 닫습니다.

  • OB_END_CLEAN ()는 버퍼의 내용을 버리고 버퍼를 닫습니다.

예를 들어, 여러 버퍼가 시작되었고 첫 번째 버퍼를 닫으려고한다고 가정합니다.

 <?php
// 첫 번째 버퍼를 시작하십시오
ob_start(function($buffer) {
    return strtoupper($buffer);
});

// 두 번째 버퍼를 시작하십시오
ob_start(function($buffer) {
    return strrev($buffer);
});

// 일부 내용을 출력하십시오
echo "Hello, World!";

// 사용 ob_list_handlers 모든 출력 버퍼 처리기를보십시오
$handlers = ob_list_handlers();
print_r($handlers);

// 첫 번째 버퍼를 닫고 결과를 출력하십시오
ob_end_flush();  // 이것은 출력됩니다 "HELLO, WORLD!"

// 사용 ob_list_handlers 버퍼 핸들러를 다시 확인하십시오
$handlers = ob_list_handlers();
print_r($handlers);
?>

산출:

 Array
(
    [0] => user-defined callback handler
    [1] => user-defined callback handler
)

HELLO, WORLD!
Array
(
    [0] => user-defined callback handler
)

이 예에서는 먼저 두 개의 버퍼를 시작합니다. ob_end_flush ()를 호출하면 첫 번째 버퍼가 닫히고 내용이 출력되며 결과는 두 번째 버퍼가 여전히 활성화되어 있음을 보여줍니다.

3.2 모든 버퍼를 삭제합니다

모든 버퍼를 삭제하고 버퍼 내용을 지우려면 OB_CLEAN ()OB_END_CLEAN ()을 사용하여 출력없이 모든 버퍼를 청소할 수 있습니다.

 <?php
// 버퍼를 시작하십시오
ob_start();
echo "Hello, World!";

// 모든 버퍼를 삭제합니다
while (ob_get_level()) {
    ob_end_clean();
}

// 현재 버퍼 목록을 출력하십시오
$handlers = ob_list_handlers();
print_r($handlers);  // 빈 배열을 표시해야합니다
?>

이 예에서는 모든 버퍼가 정리되므로 OB_LIST_HANDLERS는 빈 배열을 반환합니다.

4. URL과 버퍼링을 사용하십시오

PHP 응용 프로그램에 외부 API 또는 리소스로드 (예 : URL을 통한 데이터 가져 오기)가 포함 된 경우 출력 버퍼링을 사용 하여이 컨텐츠를 캡처하고 처리 할 수도 있습니다. 예를 들어, File_Get_Contents를 통해 URL에서 데이터를 가져 와서 브라우저에 표시해야한다고 가정합니다.

 <?php
// 출력 버퍼링을 시작하십시오区
ob_start();

// 지정된URL콘텐츠를 얻으십시오
$content = file_get_contents('https://gitbox.net/api/data');

// 출력 내용
echo $content;

// 현재 출력 버퍼 핸들러를보십시오
$handlers = ob_list_handlers();
print_r($handlers);

// 버퍼를 청소하고 결과를 출력하십시오
ob_end_flush();
?>

산출:

 Array
(
    [0] => default output handler
)

이 예에서는 file_get_contents를 통해 gitbox.net 에서 컨텐츠를 가져오고 출력 버퍼를 사용하여 컨텐츠를 캡처 한 다음 OB_LIST_HANDLERS를 통해 현재 버퍼 핸들러를 봅니다.

5. 요약

OB_LIST_HANDLERS는 개발자가 여러 출력 버퍼링 프로그램을보고 관리하는 데 도움이되는 매우 유용한 도구입니다. 특히 출력 컨텐츠를 처리 할 때 PHP 개발에 더 많은 유연성을 제공합니다. 실제로, 출력 버퍼 함수를 ​​결합하여 출력 스트림을 최적화하거나 컨텐츠가 표시되는 순서를 제어하거나 컨텐츠를 클라이언트에 전달하기 전에 형식을 수정할 수 있습니다.

이러한 버퍼링 기능을 올바르게 사용함으로써 PHP 개발자는 특히 API 데이터와 같은 외부 리소스를 처리 할 때 성능 병목 현상을 피하기 위해 대규모 응용 프로그램의 출력을보다 효율적으로 처리 할 수있어 프로그램 응답 속도 및 사용자 경험을 향상시킬 수 있습니다.