Register_shutdown_function 및 fastcgi_finish_request
PHP에서는 요청이 끝나려고 할 때 두 가지 메소드가 실행됩니다. 메소드 이름은 각각 Register_shutdown_function 및 fastcgi_finish_request입니다. 실행 시점은 비슷하지만 기능과 적용 시나리오는 다릅니다. 두 방법의 차이점을 비교하는 것은 이 기사의 초점이 아닙니다. 이 기사의 초점은 두 가지 방법의 적용 시나리오를 설명하는 것입니다.
register_shutdown_function
함수:
요청 요청이 실행되면 등록된 메서드가 호출됩니다. 실행 중에 오류가 발생하여 이 요청이 강제로 종료되더라도 등록된 메서드는 계속 실행됩니다.
애플리케이션 시나리오 1:
해당 기능을 사용하여 일부 오류에 대한 자세한 정보를 캡처할 수 있습니다. 샘플 코드는 다음과 같습니다.
<span>function</span><span> catch_error(){ </span><span>$error</span> =<span> error_get_last(); </span><span>if</span>(<span>$error</span><span>){ </span><span>var_dump</span>(<span>$error</span><span>); } } </span><span>register_shutdown_function</span>("catch_error"<span>); </span><span>ini_set</span>('memory_limit','1M'<span>); </span><span>$content</span> = <span>str_repeat</span>("aaaaaaaaaaaaaaaaaaaaaaa",100000<span>); </span><span>echo</span> "aa";
출력 정보는 다음과 같습니다.
array(4) { ["type"]=> ; int(1) ["message"]=> string(80) "1048576바이트의 허용 메모리 크기가 소진되었습니다(2300001바이트 할당을 시도했습니다)" ["file"]=> string(39) " ["line" ]=> int(13) }
위 코드에서는 Out of memory 오류를 정상적으로 캡쳐한 것을 볼 수 있습니다.
신청 시나리오 2
요청이 정상적으로 종료되었는지 확인하세요. 샘플 코드는 다음과 같습니다.
<span>function</span><span> monitor(){ </span><span>global</span><span>$is_end</span><span>; </span><span>if</span>(<span>$is_end</span> == <span>true</span><span>){ </span><span>echo</span> "success"<span>; }</span><span>else</span><span>{ </span><span>echo</span> "fail"<span>; } } </span><span>register_shutdown_function</span>("monitor"<span>); </span><span>$is_end</span> = <span>false</span><span>; </span><span>die</span><span>(); </span><span>$is_end</span> = <span>true</span>;
페이지 출력 결과는 다음과 같습니다. 실패
는 die 함수가 호출되어도 표시됩니다. 등록된 모니터 기능도 정상적으로 실행됩니다.
fastcgi_finish_request
기능:
클라이언트에 데이터를 플러시합니다. 이 메서드를 호출한 후에는 출력 내용이 클라이언트에 출력되지 않습니다.
애플리케이션 시나리오:
요청 콘텐츠 처리 중 일부를 클라이언트에 보낼 필요가 없는 경우 먼저 클라이언트에 대한 콘텐츠 출력을 생성한 후 이 메서드를 호출할 수 있습니다. . 메서드가 호출되면 콘텐츠가 클라이언트에 출력됩니다. 클라이언트에 출력할 필요가 없는 콘텐츠는 이 메서드 뒤에 배치할 수 있습니다. 이렇게 하면 응답성이 향상됩니다. 샘플 코드는 다음과 같습니다.
<span>echo</span> "a"<span>; fastcgi_finish_request(); </span><span>echo</span> "b"<span>; </span><span>file_put_contents</span>("/tmp/test","abc.com"<span>); </span><span>die</span><span>(); </span><span>file_put_contents</span>("/tmp/test2","测试数据");
페이지 출력 결과는 a
fastcgi_finish_request 메소드 뒤의 echo "b"가 출력되지 않는 것을 알 수 있습니다. 클라이언트. 하지만 /tmp/test 디렉터리에 파일이 정상적으로 생성된 것을 볼 수 있습니다. 그런데 /tmp/bo56 파일이 생성되지 않았습니다
위 내용은 관련 내용을 포함하여 Register_shutdown_function 및 fastcgi_finish_request를 소개하고 있어 PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











PHP는 오랫동안 사용되어 온 인기 있는 웹 개발 언어입니다. PHP에 통합된 PDO(PHP 데이터 개체) 클래스는 웹 애플리케이션 개발 중에 데이터베이스와 상호 작용하는 일반적인 방법입니다. 그러나 일부 PHP 개발자가 자주 직면하는 문제는 PDO 클래스를 사용하여 데이터베이스와 상호 작용할 때 다음과 같은 오류가 발생한다는 것입니다. PHPFatalerror:CalltoundefinemethodPDO::prep

C++ 코드의 "error:incompletetypeisnotallowed" 문제를 해결하십시오. C++ 프로그래밍 프로세스 중에 흔히 발생하는 오류 중 하나는 "error:incompletetypeisnotallowed"입니다. 이 오류는 일반적으로 불완전한 유형에서 작업할 때 발생합니다. 이 문서에서는 이 오류의 원인을 설명하고 몇 가지 해결 방법을 제공합니다. 첫째로, 나는

Linux 종료 명령 shutdown은 컴퓨터를 즉시 종료할 수 있습니다. 루트 사용자는 "shutdown -h now" 명령만 실행하면 됩니다. shutdown 명령은 종료 프로세스를 수행하고 종료하기 전에 사용자가 실행 중인 모든 프로그램에 메시지를 보내는 데 사용할 수 있습니다. shutdown 명령을 사용하려면 시스템 관리자 루트 사용자가 필요합니다.

Vue 애플리케이션에서 axios를 사용하는 것은 매우 일반적입니다. axios는 브라우저와 Node.js에서 사용할 수 있는 Promise 기반 HTTP 클라이언트입니다. 개발 과정에서 "Uncaught(inpromise)Error: Requestfailedwithstatuscode500"이라는 오류 메시지가 나타나는 경우가 있는데, 개발자 입장에서는 이 오류 메시지를 이해하고 해결하기 어려울 수 있습니다. 이 기사에서는 이에 대해 알아볼 것입니다.

부팅할 수 없는 "0271: 실시간 시계 오류"에 대한 해결 방법: 1. F1을 누르고 나타나는 인터페이스에서 옵션 표시줄을 세 번째 항목 "날짜/시간"으로 이동합니다. 2. 시스템 시간을 현재 시간으로 수동으로 변경합니다. 3. F10을 누르고 팝업 대화 상자에서 예를 선택합니다. 4. 정상적으로 부팅하려면 노트북을 다시 엽니다.

C++ 코드의 "error:expectedinitializerbefore'datatype'" 문제를 해결하세요. C++ 프로그래밍에서 코드를 작성할 때 가끔 컴파일 오류가 발생하는 경우가 있습니다. 일반적인 오류 중 하나는 "error:expectedinitializerbefore'datatype'"입니다. 이 오류는 일반적으로 변수 선언이나 함수 정의에서 발생하며 프로그램이 올바르게 컴파일되지 않거나

PHPWarning:fopen():failedtoopenstream:Nosuchfileordirectory 해결 방법 PHP 개발을 사용하는 과정에서 "PHPWarning:fopen():failedtoopenstream:Nosuchfileordirectory"와 같은 파일 작업 문제가 종종 발생합니다.

함수는 특정 기능을 포함하는 재사용 가능한 코드 블록으로, 입력 매개변수를 받아들이고 특정 작업을 수행하며 결과를 반환하는 것이 목적입니다. 코드 재사용성과 유지 관리성을 향상시키는 코드입니다.
