register_shutdown_function

(PHP 4, PHP 5, PHP 7, PHP 8)

register_shutdown_function注冊一個會在php中止時執(zhí)行的函數(shù)

說明

register_shutdown_function(callable $callback, mixed $parameter = ?, mixed $... = ?): void

注冊一個 callback ,它會在腳本執(zhí)行完成或者 exit() 后被調(diào)用。

可以多次調(diào)用 register_shutdown_function() ,這些被注冊的回調(diào)會按照他們注冊時的順序被依次調(diào)用。 如果你在注冊的方法內(nèi)部調(diào)用 exit(), 那么所有處理會被中止,并且其他注冊的中止回調(diào)也不會再被調(diào)用。

參數(shù)

callback

待注冊的中止回調(diào)

中止回調(diào)是作為請求的一部分被執(zhí)行的,因此可以在它們中進行輸出或者讀取輸出緩沖區(qū)。

parameter

可以通過傳入額外的參數(shù)來將參數(shù)傳給中止函數(shù)

...

返回值

沒有返回值。

錯誤/異常

如果傳入的callback不是可調(diào)用的,那么將會產(chǎn)生一個 E_WARNING 級別的錯誤。

范例

示例 #1 register_shutdown_function() 例子

<?php
function shutdown()
{
    
// This is our shutdown function, in 
    // here we can do any last operations
    // before the script is complete.

    
echo 'Script executed with success'PHP_EOL;
}

register_shutdown_function('shutdown');
?>

注釋

注意:

在某些web server(如Apache)上,可以在中止函數(shù)內(nèi)對腳本的工作目錄進行修改。

注意:

如果進程被信號SIGTERM或SIGKILL殺死,那么中止函數(shù)將不會被調(diào)用。盡管你無法中斷SIGKILL,但你可以通過pcntl_signal() 來捕獲SIGTERM,通過在其中調(diào)用exit()來進行一個正常的中止。

參見