2013-04-19 2 views
3

Я работаю над скриптами php сервера/клиента, которые могут связываться через сокет UDP. Мне было интересно, есть ли хороший способ реализовать таймаут() для функции socket_recv(). В настоящее время он блокирует мой клиент, ожидая ack.PHP UDP socket_ recv() timeout

Спасибо за ваш ввод!

ответ

6

Я нашел решение на мой вопрос: socket_set_option() имеет параметр SO_RCVTIMEO который установлен тайм-аут только для socket_recv()

, например:

socket_set_option($sock,SOL_SOCKET,SO_RCVTIMEO,array("sec"=>1,"usec"=>0)); 

Это будет установить тайм-аут на моей розетке на уровне гнезда для socket_recv() в течение 1 секунды и 0 микросекунд http://www.php.net/manual/en/function.socket-set-option.php

Спасибо, если вы искали решение!