Según the documentation, socket_read()
se supone que volver FALSE
cuando el host remoto ha cerrado la conexión, y una cadena vacía ''
cuando no hay más datos a leer. Sin embargo, durante mi prueba, nunca devuelve FALSE
, incluso cuando cierro la conexión del host remoto. Aquí está el código correspondiente:PHP - La detección de desconexión host remoto
$data = '';
do {
$read = socket_read($socket, 1024);
if ($read === FALSE) {
throw new SocketDisconnectException();
}
$data .= $read;
} while ($read !== '');
El SocketDisconnectException
no se tira, incluso cuando desconecto la conexión de host remoto. He comprobado doble y triple que no estoy atrapando la excepción y descartándola, e incluso arrojado un echo
y exit
en el condicional como un control de cordura.
¿Ha cambiado el funcionamiento de esta función, o estoy haciendo algo mal?