웹 페이지 교차 도메인의 JSON object
을 jQuery AJAX
으로 전송하는 기본적인 웹 사이트 추적 소프트웨어가 있는데, 데이터는 php
스크립트로 처리됩니다. 이는 window.onbeforeunload
에서 트리거됩니다.완료되기를 기다리는 웹 페이지가없는 PHP 스크립트 실행
내 php
스크립트를 벤치마킹 할 때 다른 도메인의 클라이언트 웹 사이트가 PHP 스크립트가 다음 페이지를로드하기 전에 계속 실행되기를 기다리는 중임을 깨달았습니다. 예를 들어 클라이언트 사이트 방문자는 다른 페이지로 이동합니다. 처리하기 위해 서버에 도메인을 보냅니다. 내 php
스크립트에 sleep(30);
을 추가하면이 php
스크립트가 완료 될 때까지 (30 초 이상) 클라이언트 웹 사이트가 다음 페이지를로드하지 않습니다.
이 스크립트를 실행 한 후에 값을 반환 할 필요가 없으므로이 php
스크립트가 클라이언트 사이트에 영향을주지 않고 실행되도록하려면 어떻게해야합니까?
나는 내가 충분히 자신을 설명했기를 바랍니다. 감사하지 않은 질문이 있으시면 고맙습니다.
해결책 :
이 나를 위해 일한 것입니다 (http://php.net/manual/en/features.connection-handling.php#93441) :
ob_end_clean();
header("Connection: close\r\n");
header("Content-Encoding: none\r\n");
ignore_user_abort(true); // optional
ob_start();
echo ('Text user will see');
$size = ob_get_length();
header("Content-Length: $size");
ob_end_flush(); // Strange behaviour, will not work
flush(); // Unless both are called !
ob_end_clean();
//do processing here
sleep(5);
echo('Text user will never see');
//do some processing
PHP-FPM에 대한
감사합니다, 나는이 좋은 해결책처럼 보이는 이해하는 것과합니다. 그러나 오류가 발생했습니다 :'정의되지 않은 함수 fastcgi_finish_request() 호출. 왜 그런가? 감사. –
아마도 당신은 nginx + fpm 대신 apache를 사용하고 있습니다.이 기능은 fpm에서만 작동합니다. – Casey
아마 이것은 유용합니다 : http://stackoverflow.com/questions/138374/close-a-connection-early –