Согласно 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
в условное выражение как проверку работоспособности.
Изменено поведение этой функции, или я делаю что-то неправильно?