7
the documentationによれば、socket_read()
は、リモートホストが接続を閉じたときにFALSE
を返し、読み取るデータがなくなると空の文字列''
を返します。しかし、テスト中にリモートホスト接続を終了しても、FALSE
を返すことはありません。ここでは、関連するコードは次のとおりです。PHP - リモートホストの切断を検出する
$data = '';
do {
$read = socket_read($socket, 1024);
if ($read === FALSE) {
throw new SocketDisconnectException();
}
$data .= $read;
} while ($read !== '');
SocketDisconnectException
決して私はリモートホスト接続を切断しても、スローされません取得します。私は例外をキャッチしてそれを破棄していないことをダブルチェックとトリプルチェックし、echo
とexit
にサニティチェックとして条件付きでスローしました。
この関数の動作が変更されましたか、間違っていますか?