从套接字读取php

从套接字读取php,php,sockets,Php,Sockets,我需要通过套接字发送和获取xml来与服务通信 ... $fp = fsockopen("...", "..,", $errno, $errstr); fwrite($fp, $xml); echo stream_get_contents($fp); 但是通过stream_get_contents()获取输出需要很长时间 另一方面,fpassthru()会立即打印输出,但脚本会在结束前停留几秒钟 有没有办法从套接字获取数据 PS:我不能使用fread(),因为不知道响应的长度您可以使用f

我需要通过套接字发送和获取xml来与服务通信

...    
$fp = fsockopen("...", "..,", $errno, $errstr);
fwrite($fp, $xml);
echo stream_get_contents($fp);
但是通过stream_get_contents()获取输出需要很长时间 另一方面,fpassthru()会立即打印输出,但脚本会在结束前停留几秒钟

有没有办法从套接字获取数据


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

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

    while (!feof($handle)) {
    $xml .= fread($handle, 8192);
}
fclose($handle);
fread()-如果满足以下条件之一,则停止读取(非详尽列表):

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