前言
任何程式設計師在開發時都可能遇到一些失誤,或其他原因造成錯誤的發生。當然,使用者如果不願意或不遵循應用程式的約束,也會在使用時造成一些錯誤發生。本文主要介紹在php中以 register_shutdown_function進行異常處理的方法,有需要的可以一起學習學習。
實例詳解
例如判斷一個腳本是否執行完成,可以設定一個屬性為 false,在執行完成時設為 true,最後透過 register_shutdown_function 函數指定的方法進行判斷,並做進一步異常處理,如程式碼所示:
class IndexController extends Controller { /** * 脚本执行是否完成 * @var bool */ protected $complete = false; public function __construct() { register_shutdown_function([$this, 'shutdown']); } /** * 异常处理 */ public function shutdown() { if ($this->complete === false) { dump('www.tanteng.me'); //此处应该输出日志并进行异常处理操作 } } }
這樣一來,可以快速定位腳本是否中斷,透過 register_shutdown_function 處理異常並提高程式的健全性,並且可以記錄程式中斷的狀態,方便透過日誌快速定位問題。
register_shutdown_function 執行機制
PHP 把要呼叫的函數調入記憶體。當頁面所有 PHP 語句都執行完成時,再呼叫此函數。請注意,在這個時候從內存中調用,不是從 PHP 頁面中調用,所以如果有路徑信息,應使用絕對路徑,因為 PHP 已經當原來的頁面不存在了。就沒有什麼相對路徑可言。
可以這樣理解呼叫條件:
1、當頁面被使用者強制停止時