OB_GET_CONTENTS ()는 현재 PHP 출력 버퍼의 내용을 얻는 데 사용됩니다. OB_START () 와 결합하여 출력 컨텐츠를 브라우저로 직접 보내지 않고 출력 컨텐츠를 먼저 저장할 수 있으므로 출력을 이차적으로 처리하거나 저장할 수 있습니다.
ob_start(); // 출력 버퍼를 켭니다
echo "Hello, world!";
$content = ob_get_contents(); // 버퍼 컨텐츠를 얻으십시오
ob_end_clean(); // 버퍼를 닫고 내용을 지우십시오
echo "Captured content: " . $content;
위의 코드는 Echo에 의해 문자열 출력을 캡처하고 $ 컨텐츠 로 저장 한 다음 출력합니다.
비동기 요청은 일반적으로 javaScript (예 : AJAX)를 통해 서버에 요청을 보내고 페이지를 새로 고치지 않고 반환 결과를 얻는 클라이언트를 참조합니다. PHP가 서버 측에서 이러한 요청을 처리하면 때때로 출력 컨텐츠를 캡처 한 다음 처리 후 프론트 엔드로 반환해야합니다.
OB_GET_CONTENTS () 를 통해 비동기 요청 (예 : 템플릿으로 렌더링 된 콘텐츠 등)의 실행 결과를 백그라운드에서 캡처 한 다음 응답으로 프론트 엔드로 돌아와 유연성을 향상시킬 수 있습니다.
Ajax를 통해 async_handler.php 에 요청을 보내면 PHP는 동적으로 생성 된 컨텐츠를 반환해야합니다. OB_GET_CONTENTS ()를 사용하여 출력을 캡처하고 발신자에게 반환합니다.
<?php
// 출력 버퍼링을 켭니다
ob_start();
// 비동기 처리 로직을 시뮬레이션합니다
echo "<div>이것은 비동기식으로 반환됩니다,현재 시간:" . date('H:i:s') . "</div>";
// 버퍼 컨텐츠를 캡처합니다
$content = ob_get_contents();
// 버퍼를 닫고 청소하십시오
ob_end_clean();
// 캡처 된 컨텐츠를 응답으로 출력하십시오
echo $content;
?>
$.ajax({
url: 'http://gitbox.net/async_handler.php',
method: 'GET',
success: function(response) {
// 반환 된 콘텐츠를 페이지에 삽입하십시오
$('#result').html(response);
},
error: function() {
alert('요청이 실패했습니다');
}
});
때때로 우리는 PHP 내에서 비동기 요청을 시작하고 결과를 얻기를 원합니다.이 결과는 CURL 과 결합 된 OB_GET_CONTENTS ()를 사용하여 구현할 수 있습니다.
<?php
function getAsyncContent($url) {
ob_start();
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
curl_close($ch);
echo $result; // 산출 curl 콘텐츠로 돌아갑니다
$content = ob_get_contents();
ob_end_clean();
return $content;
}
$url = "http://gitbox.net/async_handler.php";
$response = getAsyncContent($url);
echo "서버의 비동기 요청 결과:" . $response;
?>
OB_GET_CONTENTS ()를 사용하면 PHP 스크립트의 출력 버퍼 컨텐츠와 유연한 프로세스 출력 데이터를 캡처 할 수 있습니다.
비동기 요청 처리에서는 버퍼를 사용하여 동적 컨텐츠를 쉽게 제어하고 반환하기 위해 결과를 캡처합니다.
프론트 엔드 AJAX 요청이든 PHP 서버가 비동기 호출을 시작하든 OB_GET_CONTENTS ()는 출력을 얻고 작동하여 응용 프로그램의 확장 성과 유지 가능성을 향상시키는 데 도움이 될 수 있습니다.
이 기술이 마스터되면 복잡한 비동기 논리를 다룰 때 더 편안 할 것입니다.