設定錯誤和異常處理三函數:
register_shutdown_function(array(‘Debug’,'fatalError’)); //定義PHP程序執行完成后執行的函數
set_error_handler(array(‘Debug’,'appError’)); // 設置一個用戶定義的錯誤處理函數
set_exception_handler(array(‘Debug’,'appException’)); //自定義異常處理。
下面講一下register_shutdown_function() 函數.
功能:register_shutdown_function() 函數可實現當程序執行完成后執行的函數,其功能為可實現程序執行完成的后續操作。程序在運行的時候可能存在執行超時,或強制關閉等情況,但這種情況下默認的提示是非常不友好的,如果使用register_shutdown_function()函數捕獲異常,就能提供更加友好的錯誤展示方式,同時可以實現一些功能的后續操作,如執行完成后的臨時數據清理,包括臨時文件等。
可以這樣理解調用條件:
1、當頁面被用戶強制停止時
2、當程序代碼運行超時時
3、當PHP代碼執行完成時,代碼執行存在異常和錯誤、警告
實例說明:
1. 一個簡介的例子 , 調用一個函數
- <?php
- function test() {
- echo "test()";
- }
- register_shutdown_function(array("test"));
- echo "show: ";
- ?>
這個例子輸出
show: test()
這個函數的作用就是在退出腳本前,調用已經注冊的函數,并執行該函數。
2. 在類中用一個數組作為一個參數
- <?php
- class ClassDemo {
- public function __construct() {
- register_shutdown_function(array($this, "f"));
- }
- public function f() {
- echo "f()";
- }
- }
- $demo = new ClassDemo();
- echo "before </br>";
- ?>
輸出:
before
f()
3. 帶有參數的例子:
- <?php
- function f($str) {
- echo $str."<br>";
- }
- register_shutdown_function("f","hello");
- class ClassDemo {
- public function __construct() {
- register_shutdown_function(array($this, "f"),"hello");
- }
- public function f($str) {
- echo "f():".$str;
- }
- }
- $demo = new ClassDemo();
- echo "before </br>";
- ?>
注意事項:
1,register_shutdown_function()函數可重復調用,但執行的順序與注冊的順序相同
2,如果在調用register_shutdown_function()函數之前有exit()函數調用,register_shutdown_function()函數將不能執行
3,PHP4后支持注冊函數參數傳遞
4,在某些服務端,如Apache,當前目錄在register_shutdown_function()函數中能夠改變
5,register_shutdown_function()函數執行在headers發送之后
新聞熱點
疑難解答