register_shutdown_function

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

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

說(shuō)明

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

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

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

參數(shù)

callback

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

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

parameter

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

...

返回值

沒(méi)有返回值。

錯(cuò)誤/異常

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

范例

示例 #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)對(duì)腳本的工作目錄進(jìn)行修改。

注意:

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

參見(jiàn)