目錄
register_shutdown_function
fastcgi_finish_request
首頁 後端開發 php教程 register_shutdown_function 和 fastcgi_finish_request

register_shutdown_function 和 fastcgi_finish_request

Jul 29, 2016 am 09:04 AM
error function request shutdown

在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";
登入後複製

輸出資訊大概如下:

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) }

可見,上面的程式碼正常的捕捉了記憶體不足的錯誤。

應用場景二
檢查請求是否正常關閉。範例程式碼如下:

<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檔案沒創建

以上就介紹了register_shutdown_function AND fastcgi_finish_request,包含了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1321
25
PHP教程
1269
29
C# 教程
1249
24
PHP Fatal error: Call to undefined method PDO::prepare() in的解決方法 PHP Fatal error: Call to undefined method PDO::prepare() in的解決方法 Jun 22, 2023 pm 06:40 PM

PHP作為一種流行的Web開發語言,已經被使用很久了。 PHP中整合的PDO(PHP資料物件)類別是我們在開發Web應用程式過程中與資料庫互動的常用方法。但是,一些PHP開發者經常遇到的問題是,當使用PDO類別與資料庫互動時,他們會收到這樣的錯誤:PHPFatalerror:CalltoundefinedmethodPDO::prep

在Vue應用程式中使用axios時出現「Uncaught (in promise) Error: Request failed with status code 500」怎麼辦? 在Vue應用程式中使用axios時出現「Uncaught (in promise) Error: Request failed with status code 500」怎麼辦? Jun 24, 2023 pm 05:33 PM

在Vue應用程式中使用axios是十分常見的,axios是一種基於Promise的HTTP客戶端,可以用於瀏覽器和Node.js。在開發過程中,有時會出現「Uncaught(inpromise)Error:Requestfailedwithstatuscode500」的錯誤提示,對於開發者來說,這個錯誤提示可能有些難以理解和解決。本文將會探討這

0271:real time clock error開不開機怎麼辦 0271:real time clock error開不開機怎麼辦 Mar 13, 2023 am 11:30 AM

「0271:real time clock error」開不開機的解決方法:1、按一下F1,在出現的介面中,將選項列轉到第三個「Date/Time」;2、將系統時間手動修改成現在的時間;3、按F10,在彈出的對話框中,選擇yes;4、重新開啟筆記本即可正常開機。

解決C++程式碼中出現的「error: expected initializer before 'datatype'」問題 解決C++程式碼中出現的「error: expected initializer before 'datatype'」問題 Aug 25, 2023 pm 01:24 PM

解決C++程式碼中出現的「error:expectedinitializerbefore'datatype'」問題在C++程式設計中,有時我們在寫程式碼時會遇到一些編譯錯誤,其中一個常見的錯誤是「error:expectedinitializerbefore'datatype'」。這個錯誤通常在變數宣告或函數定義中發生,可能導致程式無法正確編譯或

解決C++程式碼中出現的「error: incomplete type is not allowed」問題 解決C++程式碼中出現的「error: incomplete type is not allowed」問題 Aug 26, 2023 pm 08:54 PM

解決C++程式碼中出現的「error:incompletetypeisnotallowed」問題在C++的程式設計過程中,有時會遇到一些編譯錯誤,其中一個常見的錯誤是「error:incompletetypeisnotallowed」。這個錯誤通常是由於在使用不完整的類型進行操作時引起的。本文將介紹這個錯誤的原因,並提供幾種解決方法。首先,我

linux關機指令shutdown可以實現立刻關機嗎 linux關機指令shutdown可以實現立刻關機嗎 Jan 28, 2023 pm 05:26 PM

linux關機指令shutdown可以實現立刻關機,只需要root使用者執行「shutdown -h now」指令即可。 shutdown指令可以用來進行關機程序,並且在關機以前傳送訊息給所有使用者正在執行的程序,shutdown指令需要係統管理者root使用者來使用。

function是什麼意思 function是什麼意思 Aug 04, 2023 am 10:33 AM

function是函數的意思,是一段具有特定功能的可重複使用的程式碼區塊,是程式的基本組成單元之一,可以接受輸入參數,執行特定的操作,並傳回結果,其目的是封裝一段可重複使用的程式碼,提高程式碼的可重複使用性和可維護性。

PHP Fatal error: Call to undefined function mysqli_connect()的解決方法 PHP Fatal error: Call to undefined function mysqli_connect()的解決方法 Jun 23, 2023 am 09:40 AM

在使用PHP編寫Web應用程式時,經常會使用MySQL資料庫來儲存資料。 PHP提供了一種與MySQL資料庫互動的方法,稱為MySQLi。然而,有時在使用MySQLi時,會遇到一個錯誤訊息,如下所示:PHPFatalerror:Calltoundefinedfunctionmysqli_connect()這個錯誤訊息意味著PHP無法找到my

See all articles