接続処理PHP 内部で、接続ステータスが保持されます。 これは、次の 4 つの状態をとりえます。
通常 PHP が実行されている場合、NORMAL 状態がアクティブになります。 リモートクライアントが接続を切った場合、ABORTED 状態フラグが有効になります。 通常、リモートクライアントの接続断は、STOP ボタンを押すことにより発生します。 PHP 側の時間制限 (set_time_limit 参照) にかかった場合、 TIMEOUT 状態フラグが有効になります。
スクリプトを終了させるためにクライアントとの接続を切断するかどうかを
決めることが出来ます。
時々、出力がどのリモートブラウザにも受信されない場合でも、
常にスクリプトの実行完了まで実行する方が便利であることがあります。
しかし、デフォルトの動作はリモートクライアントとの接続が断となった際にスクリプト
の実行は破棄されます。
この動作は、php.ini ディレクティブ ignore_user_abort にて
設定できます。
同様に同じ意味を有する Apache httpd.conf ディレクティブ
スクリプトは、組み込みのスクリプトタイマーによっても終了することが
できます。デフォルトのタイムアウトは、30 秒です。
これは、php.iniディレクティブ max_execution_time
または同義の
Apache httpd.conf ディレクティブ もう一つ注意すべき点は、状態 ABORTED および TIMEOUT は同時にアクティブにできるということです。 これは、PHP をユーザーによる中断を無視するよう設定した場合に 可能です。 PHP は、ユーザーが接続を破棄しているが、スクリプトは 実行しつづけるということがある可能性があることに注意する 必要があります。 時間制限にかかって中断される場合、もしあればシャットダウン関数が コールされます。 ここで、connection_status は 3 を返します。 |