php从套接字中读取

时间:2017-09-22 06:35:06

标签: php sockets

我需要通过socket发送和获取xml来与服务进行通信。

...    
$fp = fsockopen("...", "..,", $errno, $errstr);
fwrite($fp, $xml);
echo stream_get_contents($fp);

但是通过stream_get_contents()获取输出需要很长时间 另一方面,fpassthru()立即打印输出,但是在结束之前脚本卡住了几秒钟。

有没有办法从socket获取数据?

PS:我不能使用fread()因为不知道响应的长度

1 个答案:

答案 0 :(得分:1)

你可以选择fread - 如果你不知道响应的长度,只需在循环中检查EOF:

    while (!feof($handle)) {
    $xml .= fread($handle, 8192);
}
fclose($handle);

fread() - 如果满足以下条件之一,则读取停止(非详尽列表):

  1. 已读取长度字节
  2. 到达EOF(文件结尾)