関数処理 関数
PHP Manual

register_shutdown_function

(PHP 4, PHP 5)

register_shutdown_functionシャットダウン時に実行する関数を登録する

説明

void register_shutdown_function ( callable $callback [, mixed $parameter [, mixed $... ]] )

スクリプト処理が完了したとき、あるいは exit() がコールされたときに実行するコールバック関数を登録します。

register_shutdown_function() は複数回コールする ことが可能で、登録された順に関数がコールされます。 登録した関数内で exit() をコールした場合、 処理はそこで終了してその他のシャットダウン関数はコールされません。

パラメータ

callback

登録するコールバック。

シャットダウン時のコールバックは、リクエストの一部として実行されます。 したがって、コールバック関数からも出力を送信できるし、出力バッファにもアクセスできます。

parameter

シャットダウン関数にパラメータを渡すには、ここで追加のパラメータを渡します。

...

返り値

値を返しません。

エラー / 例外

指定したコールバックがコールできない場合は、E_WARNING レベルのエラーが発生します。

変更履歴

バージョン 説明
4.1.0 シャットダウン関数がリクエストの一部としてコールされるようになりました。 以前のバージョンを Apache で動かしている場合、 登録されたシャットダウン関数はリクエストの完了後(結果の出力を含む) に実行されます。そのため、 echoprint を用いてブラウザに出力したり ob_get_contents() を用いて出力バッファの内容を取得したりすることができませんでした。 ヘッダも常に送信された後でした。

例1 register_shutdown_function() の例

<?php
function shutdown()
{
    
// これがシャットダウン関数で、
    // スクリプトの処理が完了する前に
    // ここで何らかの操作をすることができます

    
echo 'Script executed with success'PHP_EOL;
}

register_shutdown_function('shutdown');
?>

注意

注意:

Apache などいくつかの Web サーバーでは、スクリプトの実行時ディレクトリを シャットダウン関数内で変更可能です。

注意:

SIGTERM あるいは SIGKILL でプロセスが終了した場合は、シャットダウン関数を実行しません。 SIGKILL を横取りすることはできませんが、SIGTERM 用のハンドラは pcntl_signal() で登録できます。ここで exit() を使えば、きれいに終わらせることができます。

参考


関数処理 関数
PHP Manual