PHP가 모든 페이지 출력이 완료되었음을 브라우저에 알리는 방법을 찾으려고합니다. 페이지가 완료된 후에는 대개 오래 걸리지 않는 통계 코드가 실행되지만 사용자 브라우저가 더 많은 데이터를 기다리고 싶지 않은 경우 통계 코드가 실행됩니다. 이것은 휴대 전화와 함께 작동해야하기 때문에 JavaScript를 통해 수행 할 수 없습니다.PHP 출력 완료 알림
이미 나는 나의 위치 MB 텍스트 (일본어)에 문제가없는 보장하기 위해
mb_http_output("UTF8");
ob_start("mb_output_handler");
를 사용하여 출력 버퍼링을 시작 해요. 나는 ob_end_flush()가 트릭을 할 것이라고 기대했지만, 만약 내가 잠을 자면 (10); ob_end_flush() 후 브라우저는 추가로 10 초 동안 대기합니다. 누구든지 이것에 대해 어떤 생각을 가지고 있습니까?
UPDATE : 사용 불안감 내가 "ob_gzhandler를은"이 gzip으로 하나 여기에 모든 가능한 문제를 참조 작업을 진행 아래 접근? 다시
//may be also add headers for cache-control and expires (IE)
header("Connection: close"); //tells browser that connection will be closed
ob_start();
ob_start("ob_gzhandler");
//page content
ob_end_flush();
$size = ob_get_length();
header("Content-Length: $size");
ob_end_flush();
flush();
UPDATE :
는 위의 코드에서 다른 봐 주시기 바랍니다. ob_start()를 수행해야합니다. ob_start ("ob_gzhandler") 전에; 그런 다음 ob_end_flush()를 호출하십시오. ob_get_length()를 호출하기 전에 올바른 gzip 압축 크기를 얻으십시오. 이 라인
//may be also add headers for cache-control and expires (IE)
header("Connection: close"); //tells browser that connection will be closed
ob_start();
//generate your output
$size = ob_get_length();
header("Content-Length: $size");
ob_end_flush();
flush();
//continue statistic processing
나는 이것을 시도하고 내가 sleep (20)과 같은 것을 추가하면; flush() 후에; 브라우저 (FireFox 3.5)에는 로딩 표시기가 20 초 동안 계속 표시됩니다. – AWinter
필자는 마침내이 기능을 사용할 수있게되었지만 헤더 ("Content-Encoding : none")를 포함해야만 가능합니다. 머리글 바로 아래 ("Connection : close"); 이것이 왜 일어 났는지에 대한 생각은? – AWinter
설정 머리글 ("Content-Encoding : none")을 사용하여이 작업을 수행하는 방법에 대한 아이디어. 가능한 경우 gzip을 계속 실행하십시오. – AWinter