客户端循环读socket 数据时 耗时很长,谁能解答一下

0

使用下面的代码读取socket 返回的数据,循环了三次,最后一次fgets 的结果 返回false, 这次特别慢,不知道是什么原因?


while (!feof($socket)) {
echo microtime(true) . "\n";
$buffer = fgets($socket);
var_dump($buffer);
echo microtime(true) . "\n\n";
if ($buffer === '' || $buffer === false) {
break;
}
$recvBuffer .= $buffer;
}
已邀请:

walkor

赞同来自:

最后一次应该是没有数据可读了,一直阻塞最后超时了,返回false

chinablue

赞同来自:

那怎么处理?

walkor

赞同来自:

定义一个协议规则,
例如第一行返回一个数字,表示一个有几行数据,
得到还有几行数据后,在循环那么多次去fgets,
不要没数据了,客户端还在那里傻等


协议数据类似


5
aqweqrwertewt
sadfsadfsadfsdf
asdfsadfasdfsfd
asdfsafffwserere
asfaaaaaaaaaaa

要回复问题请先登录注册