register_shutdown_function AND fastcgi_finish_request,registershutdownhook_PHP教程
register_shutdown_function AND fastcgi_finish_request,registershutdownhook
在php中又两个方法都是在请求快结束的时候执行。方法名分别是 register_shutdown_function和fastcgi_finish_request。虽然执行的时机差不多,但是功能和应用场景不一样。比较两个方法的区别不是本文的重点。本文的重点的说明两个方法的应用场景。
register_shutdown_function
功能:
注册一个方法,当一个请求request执行完毕时,调用这个注册的方法。注意,哪怕在执行过程中发生error导致本次请求被强制退出,注册的方法也会执行。
应用场景一:
可以利用他的特性,捕获一些错误的一些详细信息。示例代码如下:
<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";
输出信息大概如下:
<p>array(4) { ["type"]=> int(1) ["message"]=> string(80) "Allowed memory size of 1048576 bytes exhausted (tried to allocate 2300001 bytes)" ["file"]=> string(39) "/test.php" ["line"]=> int(13) }</p>
可见,上面的代码正常的捕捉了内存不足的错误。
应用场景二
检查请求是否正常关闭。示例代码如下:
<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>;
页面输出结果为:fail
可见,即便是调用了die函数。注册的monitor函数也正常执行了。
fastcgi_finish_request
功能:
flush数据到客户端。调用这个方法后,再有任何输出内容,都不会输出到客户端。
应用场景:
如果一个请求的处理内容中,有一部分是不需要发送到客户端时,就可以先生成输出到客户端的内容,然后调用此方法。方法被调用后,内容就会输出到客户端。而不需要输出到客户端的内容,可以放在此方法后。这样可以提高响应速度。示例代码如下:
<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文件没创建

핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

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

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

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

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

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

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

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

요청의 중국어 의미는 "요청"입니다. PHP의 전역 변수이며 "$_POST", "$_GET" 및 "$_COOKIE"를 포함하는 배열입니다. "$_REQUEST" 변수는 POST 또는 GET으로 제출된 데이터 및 COOKIE 정보를 얻을 수 있습니다.

MySQL은 다양한 웹사이트와 애플리케이션에서 널리 사용되는 일반적으로 사용되는 관계형 데이터베이스 관리 시스템입니다. 그러나 MySQL을 사용하는 동안 다양한 문제에 직면할 수 있으며, 그 중 하나는 MySQL이 예기치 않게 종료되는 것입니다. 이 기사에서는 MySQL 오류 문제를 해결하는 방법에 대해 논의하고 몇 가지 구체적인 코드 예제를 제공합니다. MySQL이 예기치 않게 종료되면 먼저 MySQL 오류 로그를 확인하여 종료 이유를 파악해야 합니다. 일반적으로 MySQL 오류 로그는 MySQL 설치 디렉터리에 있습니다.

바쁜 세상에서 우리는 정기적으로 또는 적시에 실행하고 싶은 일을 자동화하고 싶습니다. 자동화는 작업을 제어하고 작업 수행에 드는 노력을 줄이는 데 도움이 됩니다. 이러한 작업 중 하나는 컴퓨터를 종료하는 것일 수 있습니다. 컴퓨터가 정기적으로 종료되도록 할 수도 있고, 하루 중 특정 시간이나 특정 요일에 종료하도록 할 수도 있고, 한꺼번에 종료하도록 할 수도 있습니다. 시스템이 자동으로 종료되도록 타이머를 설정하는 방법을 살펴보겠습니다. 방법 1: 실행 대화 상자 사용 1단계: Win+R을 누르고 shutdown-s-t600을 입력한 후 확인을 클릭합니다. 참고: 위 명령에서 600은 시간(초)을 나타냅니다. 필요에 따라 변경할 수 있습니다. 분이나 시간이 아니라 항상 초 단위여야 합니다.

리눅스 예약 종료 명령이란 무엇입니까? 리눅스 시스템을 사용하다 보면, 많은 양의 파일을 다운로드한 후 자동으로 종료하거나 더 이상 사용하지 않을 때 서버를 자동으로 종료하는 등 종료를 예약해야 하는 경우가 많습니다. Linux 시스템에서는 "shutdown" 명령을 사용하여 예약된 종료를 구현할 수 있습니다. "shutdown" 명령을 사용하면 사용자는 시스템을 종료하거나 다시 시작하고 지연 시간을 설정할 수 있습니다. 명령에 매개변수를 추가하면 예약된 종료 기능을 구현할 수 있습니다. 명령의 기본 형식은 다음과 같습니다.

Python3.x에서 urllib.request.urlopen() 함수를 사용하여 GET 요청을 보내는 방법 네트워크 프로그래밍에서는 HTTP 요청을 보내 원격 서버에서 데이터를 가져와야 하는 경우가 많습니다. Python에서는 urllib 모듈의 urllib.request.urlopen() 함수를 사용하여 HTTP 요청을 보내고 서버에서 반환된 응답을 얻을 수 있습니다. 이 기사에서는 사용 방법을 소개합니다.

fastcgi: fastcgi는 cgi에서 개발되고 개선되었습니다. 전통적인 cgi 인터페이스 방법의 가장 큰 단점은 성능이 좋지 않다는 것입니다. 왜냐하면 http 서버가 동적 프로그램을 만날 때마다 스크립트 파서를 다시 시작하여 구문 분석을 수행해야 하고 결과가 http 서버로 반환되기 때문입니다. 높은 동시 액세스를 처리할 때는 거의 사용할 수 없습니다. 또한 기존의 cgi 인터페이스 방식은 보안성이 좋지 않아 현재는 거의 사용되지 않습니다. fastcgi 인터페이스 모드는 http 서버와 스크립트 구문 분석 서버를 분리하고 스크립트 구문 분석 서버에서 하나 이상의 스크립트 구문 분석 데몬을 시작할 수 있는 c/s 구조를 채택합니다. http 서버가 동적 프로그램을 만날 때마다 fastcg로 직접 전달될 수 있습니다.
