register_shutdown_function: シャットダウン時に実行する関数を登録する (関数処理 関数) - PHPプロ!マニュアル
register_shutdown_function: シャットダウン時に実行する関数を登録する
register_shutdown_function
(PHP 4, PHP 5)
register_shutdown_function — シャットダウン時に実行する関数を登録する
説明
スクリプト処理が完了したとき、あるいは exit() がコールされたときに実行する func という名前の関数を登録します。
register_shutdown_function() は複数回コールする ことが可能で、登録された順に関数がコールされます。 登録した関数内で exit() をコールした場合、 処理はそこで終了してその他のシャットダウン関数はコールされません。
パラメータ
- function
-
登録するシャットダウン関数。
シャットダウン関数はリクエストの一部としてコールされるので、 そこから何かを出力することもできます。 現在のところ、シャットダウン関数から出力バッファリング関数にデータを送ることはできません。
シャットダウン関数がコールされるのは、すべての出力バッファを閉じたあとのことです。 したがって、たとえば zlib.output_compression を有効にしていたとしてもその出力は圧縮されません。
- parameter
-
シャットダウン関数にパラメータを渡すには、ここで追加のパラメータを渡します。
- ...
返り値
値を返しません。
変更履歴
| バージョン | 説明 |
|---|---|
| 4.1.0 | シャットダウン関数がリクエストの一部としてコールされるようになりました。 以前のバージョンを Apache で動かしている場合、 登録されたシャットダウン関数はリクエストの完了後(結果の出力を含む) に実行されます。そのため、echo() や print() を用いてブラウザに出力したり ob_get_contents() を用いて出力バッファの内容を取得したりすることができませんでした。 ヘッダも常に送信された後でした。 |
例
例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 サーバでは、スクリプトの実行時ディレクトリを シャットダウン関数内で変更可能です。
参考
- auto_append_file
- exit() - メッセージを出力し、現在のスクリプトを終了する
- 接続処理




ページのトップへ


kende様のご指摘通り、三項演算子を使用する際には、コードの複雑度などを考慮する必要がありますね。書きやすさと共に可読性も追求したいところですね。