PHP - Как заставить пример кода php.net не зависать? - PullRequest
0 голосов
/ 14 июля 2010

Пример Простой клиент TCP / IP зависнет, если данные не будут получены.

Чтобы увидеть, что я имею в виду, скопируйте код клиента и запустите его, но удалите один из\ r \ n в GET-запросе, чтобы сделать его недействительным, поэтому он выглядит следующим образом:

$in =  "HEAD / HTTP/1.1\r\n";
$in .= "Host: www.example.com\r\n";
$in .= "Connection: Close\r\n";

Сервер не отвечает, что нормально, но я хочу иметь время ожидания илиспособ предотвратить зависание.

Я пытался установить время ожидания с помощью socket_set_option, но я думаю, что это применимо только к socket_connect.

У кого-нибудь есть решение?

ЕслиЯ использую socket_recv с флагом MSG_DONTWAIT, как правильно ждать все данные, закрытие соединения или тайм-аут, если ничего из этого не происходит?

1 Ответ

1 голос
/ 14 июля 2010

Вы можете использовать socket_select(), чтобы определить, есть ли у сокета данные для чтения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...