我需要从通过http访问的非常大的远程XML文件中检索少量数据。我在开始时只需要文件的一部分,但我访问的文件通常会很大,以至于全部下载都会导致超时。它似乎应该可能与fsockopen拉关闭连接之前只需要尽可能多,但没有我试过的工作。PHP:希望fsockopen只检索远程xml文件的一部分
下面是我一直在尝试的简化版本。任何人都可以告诉我我需要做什么改变吗?
<?php
$k = 0;
function socketopen($funcsite, $funcheader){
$fp = fsockopen ($funcsite, 80, $errno, $errstr, 5);
$buffer = NULL;
if ($fp) {
fwrite($fp, "GET " . $funcheader . " HTTP/1.0\r\nHost: " . $funcsite. "\r\n\r\n");
while (!feof($fp)) {
$buffer = fgets($fp, 4096);
echo $buffer;
if($k == 200){
break;
}
$k++;
}
fclose ($fp);
} else {
print "No Response:";
}
return (html_entity_decode($buffer));
}
$site = "www.remotesite.com";
$header = "/bigdatafile.xml";
$data = socketopen($site, $header);
?>
这工作正常,但总是打开并下载整个远程文件。 (我实际上使用了不同于if($ k = x)的条件,但那应该不重要)。
任何帮助非常感谢。 -Jim
编辑:现在它:-) – richsage 2009-12-27 16:13:08
利己工作?你用你的代码试过了吗? – streetparade 2009-12-27 16:20:56
我仍然试图做这项工作。它需要simplexml_load_file()还是我可以使用它与fsockopen? (这是一个问题,因为一些XML并不总是很好的形成,但我可以用它作为分隔数据,它不是一个RSS提要)。 Jim H. – 2009-12-27 17:49:36