PHP Socket определяет максимальное время ожидания - PullRequest
0 голосов
/ 12 июня 2009
$socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
socket_bind($socket, $ip_server , $port);

socket_sendto($socket, $ascii_egyben_kimenet, strlen($ascii_egyben_kimenet), 0, $ip_plc , $port);
$valasz_kimenet=socket_read($socket, 256);

Поскольку socket_read сервер ожидает ответа ... Как я могу определить максимальное время ожидания?

Ответы [ 3 ]

2 голосов
/ 12 июня 2009

Это делается с помощью функции socket_set_timeout(). Пример тайм-аута 1/2 секунды:

socket_set_timeout($socket, 0, 500);

Вы можете проверить, пытается ли кто-либо подключиться без блокировки, установив сокет в неблокирующий режим :

socket_set_blocking($socket, 0);
1 голос
/ 12 июня 2009

Я не знаю, появляется ли та же проблема с socket_set_timeout (), но при серьезном использовании stream_set_timeout () я обнаружил, что PHP устанавливает ограничение по времени вдвое больше, чем я указал. Так что, если я скажу это 60 секунд, на самом деле прошло ровно две минуты, прежде чем я перестал слушать. На самом деле мне нужно было взять желаемое количество секунд и умножить на 500000, чтобы получить значение для использования в stream_set_timeout ().

0 голосов
/ 12 июня 2009

Или

socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array('sec'=>10, 'usec'=>0));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...