2011-06-15 11 views
0

PHPスクリプトでループを開始していますが、クライアント接続が切断された場合は中断したいです。ネットワークのトラブルシューティングを検出しますか?

ユーザが停止ボタン(基本的な3方向ハンドシェイク)を押しても問題はありませんが、ネットワークのトラブルシューティング(Wi-Fi接続の問題)がある場合はうまくいきません。

ネットワーク障害によって接続が中止されても、ループはまだ実行されています。

マイコード:

<?php 
while (1) { 
    Echo "\n"; 
    ob_flush(); 
    flush(); 
    if (connection_status() != CONNECTION_NORMAL) { 
     break; 
    } 
    // update database 
    sleep(1); 
} 
?> 

それでは、どのように私はループを破ることができますか?私は多くの掲示板を検索しましたが、何の賛美も見つかりませんでした。私も "HTTP Keep Alive"を成功させずに試みました。

+1

トラブルシューティングは、問題を診断する行為です。これは本当にあなたが意味するものですか? –

答えて

0

PHP5と仮定すると、I/O接続は接続の状態に関する例外をスローするか、タイムアウトになるか、そうでなければこれを通知することができます。あなたは例外を処理し、そこから移動します。

システム全体の通知(Androidのやり方に似ていますが、ネットワーキングの状態が変化したことをアプリに知らせるのに似ています)を探しているのであれば、そんなことはないと思います。

したがって、問題が発生したときに通知して、キャッチセクションで状況を処理するには、読み取り/書き込みコードをtry/catch blockにラップする必要があります。読み取り/書き込みを行うために使用しているクラス/オブジェクトのドキュメントを確認し、例外をスローするかどうかを調べます。ネットワーク接続が失われた場合にのみ汎用I/Oエラーが発生する可能性があります。多くの場合、これで十分です。通常、あなたが気にするのは、データパケットを送信できるかどうかということであり、必ずしも「なぜ」ではないからです。この情報を使用して、基本的なリトライ機能を構築したり、ユーザーが何をしたいかをユーザーに促すことができます。

関連する問題