[PHP-users 10363] Re: ブラウザを閉じた場合のソケット通信切断方法
NAKAMURA Takeshi
php-users@php.gr.jp
Thu, 26 Sep 2002 16:47:59 +0900
仲村です
うそを付いてるかも知れないので、確認方法を(^^;;;;;
# 突っ込まれてないので、多分大丈夫だと思いますが
From: "aiko" <vvv_aiko_vvv@hotmail.com>
Date: Wed, 25 Sep 2002 11:23:45 +0000
Subject: [PHP-users 10347] Re: ブラウザを閉じた場合のソケット通信切断方法
>> ブラウザがデータを読み込み中でない
>> ==> PHP は動いていない
>> ==> ソケットは繋がっていない
>> ==> ウィンドウを閉じようと何しようと関係ない
>
> ブラウザとの接続が切れたら、PHPは動いていないのですか??
> ブラウザとの接続が切れても、PHPのプログラムは動いていると思っていました。
apache がどう動いているかを考えれば、apacheの下で動く PHP の
動きも分かると思います。
# apache は、要求されたコンテンツが PHP のものであれば php プログラムとして
# 解釈し実行を始め、一番最後まで実行して その結果をブラウザに渡しますよね
# ブラウザの表示が終わる ==> phpの実行が終わっていると理解して良いんじゃないでしょうか。
>> ブラウザがデータを読み込み中に ウィンドウを閉じた
>> ==> サーバーへ ack が帰ってこない(かな?)
>> ==> タイムアウト
>> ==> PHPの処理が中断され自動的にソケットが close
>> でも、いいと思うけど。
>
> ↑はタイムアウトするまで、PHPは動いているということですよね。
ひょっとすると、ブラウザが終了するときに fin パケットを投げて
apache がアイドルに戻るかも知れません。 この辺りは、ご自身で
tcpdump や ethereral を使ってパケットを覗いたり /server-status を
見てみるとよく分かるかも知れません。
# ブラウザ毎に動きが違って頭が混乱して楽しいかも???
>> phpが動いているのってほんのちょっとの間だけですよねぇ?
>
> PHPの動作とブラウザとの関係を私が認識してないだけ?
PHPは apache の下で動いていますので、apache に注目してみると
良いかと思います。
何度か、読み込み中にブラウザを終了させて apache のプロセスが
増えるかどうか とか、
実際にソケットがクローズされるかどうかは
「netstat -na | find "EST" (for win)」,「netstat -na | grep EST (for UNIX)」
で、接続中のものを実際に見て確認する等してみるといいと思います。