>백엔드 개발 >PHP 튜토리얼 >fastcgi php의 마법 같은 fastcgi_finish_request

fastcgi php의 마법 같은 fastcgi_finish_request

WBOY
WBOY원래의
2016-07-29 08:45:01955검색

다소 혼란스럽게 들릴 수 있습니다. 몇 가지 예를 들어 설명하겠습니다.

코드 복사 코드는 다음과 같습니다.


echo '예:';
fastcgi_finish_request();
echo '사느냐, 사느냐가 문제입니다.'
file_put_contents('log.txt' , '생존이냐 파괴냐 그것이 문제로다');
?>


이 스크립트를 브라우저를 통해(명령줄이 아님!) 실행해 보니 해당 문자열이 출력되지 않았습니다. , 그러나 해당 파일이 생성됩니다. 이는 fastcgi_finish_request를 호출한 후 클라이언트 응답이 종료되었지만 동시에 서버 스크립트가 계속 실행되고 있음을 보여줍니다!
이 기능을 올바르게 사용하면 사용자 경험이 크게 향상될 수 있습니다. 또 다른 예는 다음과 같습니다.

코드 복사 코드는 다음과 같습니다.


echo '예:';
file_put_contents('log.txt', date('Y-m-d H:i:s') . "비디오 n 업로드", FILE_APPEND) ;
fastcgi_finish_request( );
sleep(1);
file_put_contents('log.txt', date('Y-m-d H:i:s') . "형식 n 변환", FILE_APPEND); >sleep(1);
file_put_contents('log.txt', date('Y-m-d H:i:s') . "그림 n 추출", FILE_APPEND)


코드에서는 시간이 많이 걸리는 작업을 시뮬레이션하는 데 사용됩니다. 탐색은 차단되지 않지만 프로그램은 실행됩니다. 자세한 내용은 로그를 참조하세요.

마지막으로 Yahoo가 웹 사이트 속도 향상을 위한 모범 사례에서 버퍼 조기 플러시를 언급했다는 점을 상기시켜 드리겠습니다. 이는 PHP의 플러시 메소드를 사용하여 가능한 한 빨리 클라이언트에 콘텐츠를 보내는 것입니다. 겉보기에는 본 글에서 소개한 fastcgi_finish_request와 약간 유사하지만, 전혀 성격이 다르므로 혼동하지 마세요.

재인쇄 PS: 호출하면 응답이 전송되고 연결이 닫힙니다. 하지만 플러시를 호출하거나 Echo를 가속화하는 것과 비교하면 종료되지 않습니다. 이전에 소개한 방법보다 이 방법이 더 간단할 수 있습니다.

또한 코드 이식성 측면에서 다음 코드를 코드에 첨부할 수 있습니다.


코드 복사 코드는 다음과 같습니다.

if (!function_exists("fastcgi_finish_request")) {

function fastcgi_finish_request() { }
}


코드가 발생하지 않습니다. FPM이 아닌 환경에서는 배포로 인해 문제가 발생합니다.


위 내용은 fastcgi 콘텐츠를 포함하여 fastcgi php의 마법 같은 fastcgi_finish_request를 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.