2012-07-30 2 views
1

가능한 중복 :
close a connection early
나는 아약스의 행동에 연결을 끊도록해야합니다 How to continue process after responding to ajax request in PHP?PHP 드롭 HTTP 연결

: 어떻게

$response = getResponse($params); 
echo $response; // don't make user to wait 
flushAndDropConnection(); 
someLongActionsFor5Seconds(); 

할 수 있습니까?

+3

중복 가능성 [PHP에서 아약스 요청에 응답 한 후 작업을 계속하는 방법?] (http://stackoverflow.com/questions/1481247/how-to-continue-process-after-responding-to- ajax-request-in-php) 또는 http://stackoverflow.com/questions/4806637/continue-processing-after-closing-connection 또는 http://stackoverflow.com/questions/138374/close-a-connection-early 또는 – ManseUK

+0

'flush()'에 대한 PHP 문서에서 토론을 읽어야합니다. 이 게시물은 구체적으로 다음과 같습니다. http://www.php.net/manual/en/function.flush.php#91556 – Tchoupi

+0

중복 된 솔루션이 작동하지 않습니다. – DmitryR

답변

2

사용자의 연결을 끊고 스크립트를 실행 상태로두면됩니다.

ignore_user_abort(true); 
ob_start(); 
echo "response"; 
$size = ob_get_length(); 
header("Content-Length: $size"); 
header('Connection: close'); 
ob_end_flush(); 
ob_flush(); 
flush(); 
if (session_id()) session_write_close(); 
//your long running action here 
+0

연결 전 콘텐츠 길이를 계산해야한다고 생각하십니까? – DmitryR

+0

PHP가 자동으로 처리해야합니다. – iblue

+0

모든 출력 전에 BTW가 있어야합니다. – DmitryR