Php Socket Server: читать все ввод - PullRequest
1 голос
/ 21 ноября 2010

Я экспериментирую с очень простым php-сервером. Он принимает одно соединение, читает то, что отправлено, пишет его и выходит (я запускаю его из Cli). Код является следующим. Проблема в том, что всякий раз, когда длина данных превышает 1024, она не перехватывает конец данных и просто зависает. Любая помощь? Спасибо

$out= '';
while ($out = socket_read($client, 1024))
{
 echo $out; 
}

echo "ok";

socket_close($client);
socket_close($sock);

?>

Ответы [ 2 ]

4 голосов
/ 21 ноября 2010

Поскольку ваши последние socket_read будут зависать при ожидании других данных, почему?

Потому что вы пока никогда не заканчиваете.Функция socket_read возвращает данные, данные будут всегда, если не будет socket_read будет ожидать получения новых данных.

Используйте функцию socket_select для проверки существования данных перед вызовом socket_read затемВы защитите от зависания функции и в этот момент можете завершить.

0 голосов
/ 03 февраля 2015

пример ... Используйте функцию socket_select для проверки существования данных перед вызовом socket_read, тогда вы защитите от зависания функции, и в этот момент вы можете завершить работу.

пожалуйста ...

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