Согласно документации , socket_read()
должен возвращать FALSE
, когда удаленный хост закрыл соединение, и пустую строку ''
, когда больше нет данных для чтения. Однако во время моего тестирования он никогда не возвращает FALSE
, даже когда я закрываю соединение с удаленным хостом. Вот соответствующий код:
$data = '';
do {
$read = socket_read($socket, 1024);
if ($read === FALSE) {
throw new SocketDisconnectException();
}
$data .= $read;
} while ($read !== '');
SocketDisconnectException
никогда не выдается, даже когда я отключаю соединение с удаленным хостом. Я дважды и тройно проверил, что я не перехватываю исключение и не сбрасываю его, и даже добавляю echo
и exit
в условное выражение как проверку работоспособности.
Изменилось ли поведение этой функции или я что-то не так делаю?