(PHP 4, PHP 5)
register_shutdown_function — シャットダウン時に実行する関数を登録する
スクリプト処理が完了した際に実行される func という名前の関数を登録します。
register_shutdown_function() は複数回コールする ことが可能で、登録された順に関数がコールされます。 登録した関数内で exit() をコールした場合、 処理はそこで終了してその他のシャットダウン関数はコールされません。
PHP 4.0.6 以前のバージョンを Apache で動かしている場合、 登録されたシャットダウン関数はリクエストの完了後(結果の出力を含む) に実行されます。そのため、echo() や print() を用いてブラウザに出力したり ob_get_contents() を用いて出力バッファの内容を取得したりすることができませんでした。 PHP 4.1 以降、シャットダウン関数はリクエストの一部として実行されるようになり、 そこから結果を出力できるようになりました。現在のところ、 シャットダウン関数の中で出力バッファリング関数を用いてデータを加工する方法はありません。 シャットダウン関数はすべての出力バッファを閉じてからコールされます。 そのため、たとえ zlib.output_compression が有効になっていたとしても出力結果は圧縮されません。
PHP 4 以降、register_shutdown_function() に追加のパラメータを渡すことで シャットダウン関数にパラメータを渡せるようになりました。
値を返しません。
例1 register_shutdown_function() の例
<?php
function shutdown()
{
// これがシャットダウン関数で、
// スクリプトの処理が完了する前に
// ここで何らかの操作をすることができます
echo 'Script executed with success', PHP_EOL;
}
register_shutdown_function('shutdown');
?>
注意: 一般に、PHP では未定義の関数は致命的なエラーを引き起こします。 しかし register_shutdown_function() で指定された function が未定義の場合はそのかわりに E_WARNING レベルのエラーが発生します。 また、PHP の内部的な理由により、このエラーは Unknown の 0 行目で発生したとみなされます。
注意: Apache などいくつかの Web サーバでは、スクリプトの実行時ディレクトリを シャットダウン関数内で変更可能です。
注意: シャットダウン関数はスクリプトがシャットダウンする際にコールされるので、 その際は常にヘッダが送信されています。