Zgodnie z , ma on zwrócić FALSE
, gdy host zdalny zamknął połączenie, i pusty ciąg ''
, gdy nie ma już danych do odczytania. Jednak podczas moich testów nigdy nie zwraca FALSE
, nawet po zamknięciu zdalnego połączenia hosta. Oto odpowiedni kod:PHP - Wykrywanie zdalnego odłączenia hosta
$data = '';
do {
$read = socket_read($socket, 1024);
if ($read === FALSE) {
throw new SocketDisconnectException();
}
$data .= $read;
} while ($read !== '');
SocketDisconnectException
nigdy nie zostaje wrzucony, nawet kiedy odłączyć połączenia zdalnego hosta. Dwukrotnie i potrójnie sprawdziłem, czy nie dostrzegam wyjątku i odrzucam go, a nawet wrzucam do warunkowego warunku sprawdzania poprawności w postaci warunku echo
i exit
.
Czy zmieniło się zachowanie tej funkcji, czy też robię coś nie tak?