Hola Buenos días.
Llevo bastantes días mirando a ver que le ocurre a éste trozo de código que envía Sockets. Pero no entiendo por qué no funciona como debería. Explico su funcionamiento y mi problema.
El siguiente código que mostraré a continuación es el código de un método llamado send(), el cual envía un Mensaje $message (Es parámetro del método send()).
$data['ip'] = 'XXX.XXX.XXX.XXX';
$data['puerto'] = XXXX;
// Creamos el Socket.
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
// Especificamos un tiempo máximo de 5 segundos.
socket_set_option($socket, SOL_SOCKET, SO_SNDTIMEO, array("sec"=>4, "usec"=>0));
// Nos conectamos al Socket.
if(socket_connect($socket, $data['ip'], $data['puerto']) === FALSE){
// Cerramos el Socket.
socket_close($socket);
return false;
} else {
// Enviamos el mensaje al Socket.
socket_write($socket, $message, strlen($message));
// Cerramos el Socket.
socket_close($socket);
return true;
}
El problema es que necesito marcar un TIMEOUT de 4 segundos, y cuando éste salte, devolver un return false; al igual que si no se logra conectar con ese IP:PUERTO.
El código no funciona como debería, puesto que hay veces que se queda colgado y no entiendo que es lo que puede suceder. Espero que alguien en ésta Comunidad pueda resolver mi duda.
Muchísimas gracias por adelantado.