クライアントの接続が切断された際にスクリプトの実行を終了するかどうかを設定する

# ignore_user_abort

(PHP 4, PHP 5, PHP 7, PHP 8)

ignore_user_abort — クライアントの接続が切断された際にスクリプトの実行を終了するかどうかを設定する

### 説明

function ignore_user_abort(?bool `$enable` = `null`): int

クライアントの接続が切断された際にスクリプトの実行を終了するかどうかを設定します。

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() を参照ください。

### 参考

- connection_aborted() - クライアントとの接続が切断されているかどうかを調べる
- connection_status() - 接続ステータスのビットフィールドを返す
- PHP における接続処理についての説明は 接続処理

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open