使用下面的代码读取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;
}
最后一次应该是没有数据可读了,一直阻塞最后超时了,返回false
怎么处理?
那怎么处理?
定义一个协议规则,
例如第一行返回一个数字,表示一个有几行数据,
得到还有几行数据后,在循环那么多次去fgets,
不要没数据了,客户端还在那里傻等
协议数据类似
5
aqweqrwertewt
sadfsadfsadfsdf
asdfsadfasdfsfd
asdfsafffwserere
asfaaaaaaaaaaa