[PHP-users 28685] Re: 同時アクセスがあった場合のエラー処理
Shu Sawada
luna @ lunanet.gr.jp
2006年 3月 10日 (金) 03:00:14 JST
さわだです。
> 今回の場合とケースは違いますが、
> このあたりのスレッドを何気に思い出しました。
>
> >[PHP-users 27006] Re: ダウンロードヘッダー出力後の処理の制御
> http://ns1.php.gr.jp/pipermail/php-users/2005-September/027523.html
>
> 応用で何かできるかも・・・
> http://php.s3.to/man/features.connection-handling.html
なるほど。
接続が終了する前(PHPが動いている間)であれば、状態を取れるということですね。
わりと長めの動作をするようなスクリプトであれば、ブラウザが閉じられた
あるいは中止を押下したと推定することはできそうです。
確かにPHPが動いている状況なら何とかなるような気もするんですが、
今回のケースでは素直に作るとPHPは動いていない状態だと思うので、
ちょっと実装がイメージできないでいるのでした。
----
ところで、27006で例示されているコードについてちょっと試してみました。
firefox 1.5.0.1 / WindowsXP Pro SP2 です。
if ($issuccess == 1) {
mail("luna@***********", "tt", "hoge");
}
として、PHPがダウンロード作業を終了した気分になったら、メールを送るように
してみました。
ダウンロードには10秒程度時間が掛かりそうなサイズのファイル(5MBぐらい)を
用いています。
- ダイアログが出て「キャンセル」押下 -> 何も起こらない
- ダイアログが出て「OK」押下 -> ダウンロード完了後メール届く
- ダイアログを放置してfirefoxに先読みさせる -> ダイアログ出たままでメール届く
ということで、まあそうなるよね、という結果だと思います。
元質問者の方は解決ということにしているようですが、「保存の押下」をトリガには
できていないわけで。(クライアントにダウンロード自体はされているんですが)
PHPの実行中に通信が中断したかどうかしか把握できないと思うので、ブラウザの挙動に
結びつけるのはなかなか難しいかもですね、、、
長時間の処理(複雑なクエリとか)を行うような場合はナイスなのかな、と思います。
(使ったことあるような気もするんですが、、、(忘
--
Shu Sawada
http://luna.lunanet.gr.jp/
PHP-users メーリングリストの案内