Web aym.pekori.to

register_shutdown_function

(PHP 3 >= 3.0.4, PHP 4, PHP 5)

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

説明

void register_shutdown_function ( callback function [, mixed parameter [, mixed ...]] )

スクリプト処理が完了した際に実行される 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(), および 接続処理 の章も参照ください。