PHP 프로그래밍에서 출력 버퍼링은 매우 강력하고 일반적으로 사용되는 기능입니다. 출력 캐시를 제어함으로써 프로그래머는 출력을 지연 시키거나 수정하고 출력을 브라우저로 보내는시기와 방법을 결정할 수도 있습니다. 특히 복잡한 애플리케이션을 다룰 때 출력 캐시 계층 문제, 특히 캐시 처리의 순서 및 문제를 해결하기가 매우 어려울 수 있습니다. 이 시점에서 OB_LIST_HANDLERS 함수는 PHP에서 출력 캐시 계층을 신속하게보고 디버깅하는 데 도움이되는 매우 효과적인 도구입니다.
OB_LIST_HANDLERS는 현재 활성화 된 모든 출력 캐시 프로세서 목록을 반환하는 PHP 내장 기능입니다. 이 함수는 매개 변수를 수신하지 않으며 프로세서 이름이 포함 된 배열을 반환합니다. 각 프로세서는 활성화 된 출력 캐시 함수를 나타내며 출력 순서는 활성화 순서로 배열됩니다.
<?php
$handlers = ob_list_handlers();
print_r($handlers);
?>
복잡한 애플리케이션에서, 여러 캐시 프로세서는 OB_START ()를 사용하여 캐시를 활성화하는 것과 같은 중첩 방식으로 사용될 수 있으며, OB_GZHANDLER (GZIP 압축)와 같은 다른 캐시 프로세서 또는 메모리의 캐시 된 데이터와 같은 사용자 정의 프로세서가 프로그램의 출력에 영향을 줄 수 있습니다. 현재 OB_LIST_HANDLERS는 문제를 신속하게 찾는 데 도움이 될 수 있습니다.
OB_LIST_HANDLERS를 호출하면 현재 캐시 프로세서 목록을 가져와 활성화 된 프로세서와 주문을 확인할 수 있습니다. 이는 캐시 충돌 또는 부적절한 캐시 계층과 같은 문제 해결 문제에 중요합니다.
여러 위치에서 여러 출력 캐싱 메커니즘을 사용하는 웹 응용 프로그램을 개발한다고 가정 해 봅시다. 예를 들어, 컨트롤러에서 OB_START ()를 사용하여 특정 HTML 출력을 버퍼링 할 수 있으며 GZIP 압축에 OB_GZHANDLER를 사용할 수도 있습니다. 그러나 어떤 경우에는 프로세서가 캐시되는 순서의 문제로 인해 출력이 예상대로 압축되거나 캐시되는 것처럼 보이지 않습니다.
OB_LIST_HANDLERS를 통해 현재 캐시 프로세서 목록을 확인하여 캐시 레벨이 올바른지 확인할 수 있습니다.
<?php
// 출력 버퍼링을 시작하십시오
ob_start();
// 할 수 있게 하다 gzip 압축
ob_start('ob_gzhandler');
// 현재 활성화 된 모든 출력 캐시 프로세서를 확인하십시오
$handlers = ob_list_handlers();
print_r($handlers);
// 일부 내용을 출력하십시오
echo "Hello, world!";
// 출력 캐시를 끄고 브라우저로 컨텐츠를 보냅니다.
ob_end_flush();
?>
위의 예에서는 먼저 OB_START ()을 호출하여 출력 캐시를 시작한 다음 OB_START ( 'OB_GZHANDLER')를 호텔하여 GZIP 압축 캐시 프로세서를 시작합니다. OB_LIST_HANDLERS를 사용하여 현재 캐시 프로세서 목록을 출력하여 예상 대로이 두 캐시 프로세서가 활성화되어 있는지 확인하는 데 도움이됩니다.
Array
(
[0] => ob_gzhandler
[1] => default output handler
)
출력에서 볼 수 있듯이 OB_GZHANDLER는 기본 출력 프로세서 전에 활성화됩니다. 주문을 조정하려면 해당 기능을 통해 주문을 제어 할 수 있습니다.
OB_LIST_HANDLERS는 특히 여러 캐시 프로세서가 서로 영향을 줄 수있는 복잡한 응용 프로그램에서 개발자가 신속하게 문제 해결 및 디버그 출력 캐시 계층 문제를 돕는 데 도움이되는 매우 유용한 기능입니다. 이 기능을 사용하면 출력 캐시 계층 구조를 명확하게보고 가능한 캐시 문제를 찾을 수 있습니다. 캐시 프로세서의 활성화 순서는 매우 중요하므로 OB_START () 및 기타 캐시 제어 기능을 올바르게 사용하는 것이 중요합니다.