スクリプト処理が完了した際に実行される 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() に 追加のパラメータを渡すことでシャットダウン関数にパラメータを 渡せるようになりました。
注意: 一般に、PHP では未定義の関数は致命的なエラーを引き起こします。 しかし register_shutdown_function() で指定された function が未定義の場合はそのかわりに E_WARNING レベルのエラーが発生します。 また、PHP の内部的な理由により、このエラーは Unknown の #0 行目で発生したとみなされます。
注意: Apache などいくつかの Web サーバでは、スクリプトの実行時ディレクトリを シャットダウン関数内で変更可能です。
注意: シャットダウン関数はスクリプトがシャットダウンする際にコールされるので、 その際は常にヘッダが送信されています。
auto_append_file, exit(), および 接続処理 の章も参照ください。