array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'ja', ), 'this' => array ( 0 => 'function.ignore-user-abort.php', 1 => 'ignore_user_abort', ), 'up' => array ( 0 => 'ref.misc.php', 1 => 'その他の関数', ), 'prev' => array ( 0 => 'function.hrtime.php', 1 => 'hrtime', ), 'next' => array ( 0 => 'function.pack.php', 1 => 'pack', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'ja', 'path' => 'reference/misc/functions/ignore-user-abort.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 4, PHP 5, PHP 7, PHP 8)
ignore_user_abort — クライアントの接続が切断された際にスクリプトの実行を終了するかどうかを設定する
クライアントの接続が切断された際にスクリプトの実行を終了するかどうかを設定します。
PHP をコマンドラインスクリプトとして実行していて
スクリプトを終了させずに tty が消えた場合は、
次に何かを書こうとしたときにスクリプトが終了します。これは
enable
が true
に設定されていても同じです。
enable
この値が指定されるか、null
でない場合、この関数は ini 項目 ignore_user_abort
に enable
の値を設定します。
省略した場合、この関数は前の設定をそのまま返し、何も変更しません。
以前の設定を表す integer 値を返します。
バージョン | 説明 |
---|---|
8.0.0 |
enable は、nullable になりました。
|
例1 ignore_user_abort() の例
<?php
// ユーザーによる中断を無視し、
// スクリプトを永遠に実行させます
ignore_user_abort(true);
set_time_limit(0);
echo 'PHP における接続ハンドリングのテスト';
// 無意味なループを繰り返します。
// きっと誰かが他のページに移動したり
// "中止" ボタンを押したりしてくれるでしょう
while(1)
{
// 接続失敗?
if(connection_status() != CONNECTION_NORMAL)
{
break;
}
// 10 秒間お休み
sleep(10);
}
// ここに到達したということは、while ループ内で
// 'break' が実行されたのでしょう
// ここで、ログを記録したりなどの必要な処理を行います
// これは、ブラウザに依存せずに行えます
?>
PHP は、クライアントに情報を送信しない限り ユーザーが接続を切断したかどうかを検出できません。 単に echo 文を使っただけでは、情報が送信されたかどうかを保証できません。 flush() を参照ください。