サーバーに接続し、サーバーからテキスト行が送信されるのを待つソケットクライアントがあります。
私は接続を開きます:
$handle = fsockopen(MY_IP_ADDRESS,MY_PORT,$sockErrno,$sockErrStr);
stream_set_blocking($handle,1);
stream_set_timeout($handle,MY_SOCKET_TIMEOUT);
それで:
while (true) {
$inString = fgets($handle,256);
do some stuff with the received data...
}
これはすべてうまくいきます。メッセージの受信間隔は特にありません。メッセージは 1 秒間に数通届く場合もあれば、数分間届かない場合もあります。
stream_set_timeout は 60 秒に設定されています... メッセージが受信されていない場合は、ループして fget を再度キューに入れます。
時々、何らかの理由で接続が切断されます。
切断された接続を検出できるようにして、再接続を開始できるようにしたいと考えています。
切断された接続を検出する方法はありますか? ストリーム タイムアウトが発生したときに調べて、接続がなくなったことを確認できるものはありますか?