我需要通过socket发送和获取xml来与服务进行通信。
...
$fp = fsockopen("...", "..,", $errno, $errstr);
fwrite($fp, $xml);
echo stream_get_contents($fp);
但是通过stream_get_contents()获取输出需要很长时间 另一方面,fpassthru()立即打印输出,但是在结束之前脚本卡住了几秒钟。
有没有办法从socket获取数据?
PS:我不能使用fread()因为不知道响应的长度
答案 0 :(得分:1)
你可以选择fread - 如果你不知道响应的长度,只需在循环中检查EOF:
while (!feof($handle)) {
$xml .= fread($handle, 8192);
}
fclose($handle);
fread() - 如果满足以下条件之一,则读取停止(非详尽列表):