Secondo the documentation, socket_read()
deve restituire FALSE
quando l'host remoto ha chiuso la connessione e una stringa vuota ''
quando non ci sono più dati da leggere. Tuttavia, durante i miei test, non restituisce mai FALSE
, anche quando chiudo la connessione host remoto. Ecco il codice rilevante:PHP - Rilevamento disconnessione host remoto
$data = '';
do {
$read = socket_read($socket, 1024);
if ($read === FALSE) {
throw new SocketDisconnectException();
}
$data .= $read;
} while ($read !== '');
Il SocketDisconnectException
mai si butta, anche quando stacco il collegamento host remoto. Ho verificato il doppio e il triplo che non sto rilevando l'eccezione e scartandola, e persino lanciata in un echo
e exit
nel condizionale come controllo di integrità.
Il funzionamento di questa funzione è cambiato o sto facendo qualcosa di sbagliato?