I have a socket client that connects to a server and waits for lines of text to be sent from the server.
I open the connection with:
$handle = fsockopen(MY_IP_ADDRESS,MY_PORT,$sockErrno,$sockErrStr);
stream_set_blocking($handle,1);
stream_set_timeout($handle,MY_SOCKET_TIMEOUT);
Then:
while (true) {
$inString = fgets($handle,256);
do some stuff with the received data...
}
This all works fine. There is no particular interval between messages received. Messages may arrive several per second or not for several minutes.
The stream_set_timeout is set to 60 seconds... if no message has been received then I just loop around and queue the fgets again.
Once in a while, the connection is broken for one reason or another.
I want to be able to detect the broken connection so I can begin to attempt to reconnect.
Is there a way to detect a broken connection? Is there something I can examine when a stream timeout occurs that will tell me there is no longer a connection?