使用PHP加载XML需要太长时间

时间:2009-03-11 12:04:09

标签: php xml

我正在尝试从在线XML文件中检索信息,但获取该信息需要很长时间。它甚至可以获得大部分时间的超时错误。

奇怪的是,当我直接在浏览器上打开link时很快。

$xmlobj = simplexml_load_file("http://apple.accuweather.com/adcbin/apple/Apple_Weather_Data.asp?zipcode=EUR;PT;PO019;REGUA");
print header("Content-type: text/plain");
print_r($xmlobj);

3 个答案:

答案 0 :(得分:2)

那是因为他们根据你正在使用的浏览器阻止它们。 试试这个:

$curl = curl_init();
curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.6) Gecko/2009012700 SUSE/3.0.6-1.4 Firefox/3.0.6');                                                                                                                                     
curl_setopt($curl, CURLOPT_URL,'http://apple.accuweather.com/adcbin/apple/Apple_Weather_Data.asp?zipcode=EUR;PT;PO019;REGUA');             
$xmlstr = curl_exec($curl);
$xmlobj = simplexml_load_string($xmlstr);
print header("Content-type: text/plain");
print_r($xmlobj);

顺便说一句。在文件中,您可以看到“Redistribution Prohibited”,因此您可能希望查找一些免版税的天气数据来源。

答案 1 :(得分:0)

上面的代码对我来说非常好。尝试从其他位置读取另一个xml文件(小尺寸)。

对我来说看起来像防火墙一样!

答案 2 :(得分:0)

一旦您发送了带有vartec指示的cURL的虚假用户代理标头,将XML缓存到您的服务器可能是个好主意。对于天气,也许一个小时将是一个好时机(玩这个,如果RSS更频繁更新,你可能想尝试15分钟)。

将它本地保存到您的服务器后,读取它并解析XML会更快。

请记住RSS确实声明重新分发禁止。 IIRC有一些免费的在线天气RSS源,所以也许你应该尝试另一个。