아약스를 통해 호출되는 스크립트가 있습니다. 이 스크립트는 Apache 2.4.7 서버와 PHP 5.5.9에서 실행됩니다.PHP - 강제 연결을 닫을 때 데이터가 전송되지 않습니다.
스크립트는 브라우저에 응답을 보낸 다음 연결을 닫고 더 많은 작업을 계속 실행합니다.
이것은 첫 번째 방법입니다. 작동하지 않습니다.
<?php
ob_start();
echo "some text";
$size = ob_get_length();
ignore_user_abort(true);
header("Connection: close\r\n");
header("Content-Length: $size");
header("Content-Encoding: None", true);
ob_end_flush();
flush();
ob_end_clean();
//after this a few actions follow
?>
오류는 :
- 말림 : 이것은 둘째 순 :: ERR_CONTENT_LENGTH_MISMATCH
(18) 전사 9 바이트
<?php
ob_start();
echo "some text";
$data = ob_get_contents();
$size = ob_get_length();
ob_end_clean();
ignore_user_abort(true);
header("Connection: close\r\n");
header("Content-Length: $size");
header("Content-Encoding: None", true);
echo $data;
ob_end_flush();
flush();
ob_end_clean();
//after this a few actions follow
?>
이것은 시행 착오를 거쳐 작성되었으며, 왜 작동하는지 그리고 다른 이유는 알 수 없습니다.
나는 이것을 이해하는 데 도움이되기를 바랍니다.
ob_end_flush();
flush();
ob_end_clean();
ob_end_flush()
및 ob_end_clean()
모두 출력 버퍼링을 종료합니다 : 그것은 문제처럼 보인다
감사합니다,하지만 불행히도 그것은 나를 위해 작동하지 않았다. 같은 오류. –
@MarvinSaldinger, 스크립트를 [gist] (https://gist.github.com/) 또는 [pastebin] (http://pastebin.com/)에 복사하고 링크를 공유 할 수 있습니까? 방금 다른 컴퓨터에서 내 스 니펫을 다시 시도했는데 제대로 작동합니다. – labue
나는 그것을 할 수 없다. ob_start() 다음에는 데이터베이스에 액세스하는 일부 포함 된 파일이 있습니다. 다른 에코 또는 그와 비슷한 것은 없습니다. 나머지는 당신이 보는 것입니다. –