PHP 출력 버퍼와 헤더 발송 문제 상세 설명

2284 단어 php완충header
헤더나 쿠키 함수 앞에서 대량의 문자를 브라우저에 보내면 헤더salreadysent 오류가 발생합니다. 다음은 설명입니다.

headers_sent()


이 함수는 헤더를 보내는 상태를 알려 줍니다.브라우저에 출력을 보내면, 방향을 바꾸는 헤더 함수를 사용해서는 안 됩니다.이러한 오류를 방지하기 위해 headers_sent () 함수는 헤더의 발송 상태를 검사합니다.헤더 상태에 따라 TRUE 또는 FALSE를 반환합니다.php 스크립트를 실행할 때, 출력을 버퍼에 저장한 다음 브라우저에 보냅니다.단, 이것은 당신의 서버 php에 달려 있습니다.출력 버퍼를 열거나 닫아야 합니다.

output_buffering = Off
이제 출력 버퍼를 닫았기 때문에 모든 출력이 브라우저로 전송됩니다.우리는 하나의 예를 통해 공부합시다.

<?Php
echo 'Hello p2hp.com';
echo "<br><br>";
if (!headers_sent()) {
echo "  header , header cookie ";
}else{
echo " Header , header cookie  ";
}
?>
상기 코드의 출력은 당신의 php에 달려 있습니다.ini 설정.우리에게 있어서 우리의 php.ini 기본값은 다음과 같습니다.
output_buffering     4096     4096
위의 첫 줄 코드에서, 우리는 출력을 브라우저에 보낼 것이지만, 여전히 header_sent () 는 헤더를 보내지 않았습니다. 버퍼가 브라우저에 출력을 보내지 않았기 때문입니다.그래서 저희가 이런 출력을 받을 거예요.
헤더가 없으면 헤더나 쿠키를 보낼 수 있습니다
따라서 브라우저에 출력을 보내려면 출력 버퍼 용량을 다 소모해야 합니다.여기는 4096입니다.따라서 제한을 초과하기 위해 브라우저에 더 많은 출력을 보내고 헤더의 발송 상태를 확인하려고 합니다.

<?php
for ($i=1; $i<=372; $i++) {
    echo "p2hp.com - ";
}
echo "<br><br>";
if (!headers_sent()) {
    //  header , header cookie //
    echo ' header , header cookie';
    // header("HTTP/1.1 301 Moved Permanently");
    // header ("Location: mynewpage1.html");
    exit;
} else {
    // Header , header cookie  //
    echo 'Header , header cookie ';
    header("Location: mynewpage1.html");// Warning: Cannot modify header information - headers already sent by xxxxx
}
위의 코드에서 $i 값을 늘리거나 줄여 for 순환을 조정할 수 있습니다.순환 수가 높을수록 더 많은 데이터가 버퍼에 발표될 것이다.$i의 최대치를 추가하여 headers_ 보기sent()가 어디에서 TRUE로 변경됩니까?
flush () 를 사용하여 버퍼 출력을 브라우저에 강제로 보낼 수 있습니다.그러나 이것은 서버에 달려 있고 다른 방식으로 작동할 수 있다.
참조 https://www.plus2net.com/php_tutorial/headers_sent.php

총결산


PHP 출력 버퍼와 헤더의 발송에 관한 이 글은 여기까지 소개합니다. 더 많은 관련 PHP 출력 버퍼 헤더의 발송 내용은 저희 이전의 글을 검색하거나 아래의 관련 글을 계속 훑어보십시오. 앞으로 많은 응원 부탁드립니다!

좋은 웹페이지 즐겨찾기