register_shutdown_function函數詳解
阿新 • • 發佈:2017-07-24
支持 函數詳解 友好 apache 目錄 perror 不能 public handle
2,如果在調用register_shutdown_function()函數之前有exit()函數調用,register_shutdown_function()函數將不能執行
3,PHP4後支持註冊函數參數傳遞
4,在某些服務端,如Apache,當前目錄在register_shutdown_function()函數中能夠改變
5,register_shutdown_function()函數執行在headers發送之後
設定錯誤和異常處理三函數
- 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發送之後
register_shutdown_function函數詳解