私は実行時間に関して非常に長い php コードを実行します。通常は mozzila で実行し、その間に他のことを行い、chrome で作業します。
とにかくすべてのコードがサーバー上で既に実行されているはずなので、実行中のコードに何が起こるのか、ブラウザを閉じるかクラッシュするとどうなるのだろうか。
私は実行時間に関して非常に長い php コードを実行します。通常は mozzila で実行し、その間に他のことを行い、chrome で作業します。
とにかくすべてのコードがサーバー上で既に実行されているはずなので、実行中のコードに何が起こるのか、ブラウザを閉じるかクラッシュするとどうなるのだろうか。
デフォルトでは、PHP プロセスは次回クライアントに出力を送信しようとしたときに破棄されます¹ ignore_user_abort
。追加の関連情報については、接続処理に関するマニュアルのセクションをお読みください。
¹ PHP または Web サーバーによる出力バッファリングが存在する場合、「何かをエコーする」ことは必ずしも「出力がクライアントに送信される」とは限らないことに注意してください。を参照してくださいflush
。
サーバーの設定に大きく依存します。たとえば、gzip を実行してブラウザを閉じた場合でも、実行できます。
理想的には、php を呼び出した httpd がシグナルを送信して停止する必要がありますが、常に発生するとは限りません。
その後、ignore_user_abort を使用してシグナルを取得した場合、PHP 自体が何を行うかを制御できます。