溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

register_shutdown_function 函數(shù)是什么

發(fā)布時間:2020-11-13 11:59:31 來源:億速云 閱讀:147 作者:小新 欄目:編程語言

這篇文章主要介紹了register_shutdown_function 函數(shù)是什么,具有一定借鑒價值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。

register_shutdown_function 函數(shù)是什么

php開發(fā)測試及線上的時候可以根據(jù)不同情況設(shè)定錯誤和異常處理需要用到有

設(shè)定錯誤和異常處理三函數(shù)

register_shutdown_function(array(‘Debug’,'fatalError’)); //定義PHP程序執(zhí)行完成后執(zhí)行的函數(shù)
set_error_handler(array(‘Debug’,'appError’)); // 設(shè)置一個用戶定義的錯誤處理函數(shù)
set_exception_handler(array(‘Debug’,'appException’)); //自定義異常處理。

下面講一下register_shutdown_function() 函數(shù).

功能:register_shutdown_function() 函數(shù)可實(shí)現(xiàn)當(dāng)程序執(zhí)行完成后執(zhí)行的函數(shù),其功能為可實(shí)現(xiàn)程序執(zhí)行完成的后續(xù)操作。程序在運(yùn)行的時候可能存在執(zhí)行超時,或強(qiáng)制關(guān)閉等情況,但這種情況下默認(rèn)的提示是非常不友好的,如果使用register_shutdown_function()函數(shù)捕獲異常,就能提供更加友好的錯誤展示方式,同時可以實(shí)現(xiàn)一些功能的后續(xù)操作,如執(zhí)行完成后的臨時數(shù)據(jù)清理,包括臨時文件等。

可以這樣理解調(diào)用條件:

1、當(dāng)頁面被用戶強(qiáng)制停止時

2、當(dāng)程序代碼運(yùn)行超時時

3、當(dāng)PHP代碼執(zhí)行完成時,代碼執(zhí)行存在異常和錯誤、警告

實(shí)例說明

1. 一個簡介的例子 , 調(diào)用一個函數(shù)

<?php
    function test() {
        echo "test()";
    }
    register_shutdown_function(array("test"));
    echo "show: ";
 ?>

這個例子輸出

show: test()

這個函數(shù)的作用就是在退出腳本前,調(diào)用已經(jīng)注冊的函數(shù),并執(zhí)行該函數(shù)。

2. 在類中用一個數(shù)組作為一個參數(shù)

<?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. 帶有參數(shù)的例子:

<?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>";  
?>

注意事項(xiàng)

1,register_shutdown_function()函數(shù)可重復(fù)調(diào)用,但執(zhí)行的順序與注冊的順序相同
2,如果在調(diào)用register_shutdown_function()函數(shù)之前有exit()函數(shù)調(diào)用,register_shutdown_function()函數(shù)將不能執(zhí)行
3,PHP4后支持注冊函數(shù)參數(shù)傳遞(PHP視頻教程)
4,在某些服務(wù)端,如Apache,當(dāng)前目錄在register_shutdown_function()函數(shù)中能夠改變
5,register_shutdown_function()函數(shù)執(zhí)行在headers發(fā)送之后

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享register_shutdown_function 函數(shù)是什么內(nèi)容對大家有幫助,同時也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,遇到問題就找億速云,詳細(xì)的解決方法等著你來學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI