English 中文(简体)
使用PHP加载XML需要太长时间。
原标题:
  • 时间:2009-03-11 12:04:09
  •  标签:

我正尝试从一个在线XML文件中检索信息,但获取信息需要太长时间。这甚至会大多数时候出现超时错误。

奇怪的是,当我直接在浏览器中打开链接时速度很快。

$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);
最佳回答

That s because they re blocking depending what browser you re using. Try this:

$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);

顺便说一下,在文件中你可以看到“禁止再分配”,所以你可能要寻找一些免版税的天气数据来源。

问题回答

上述代码对我来说完美运行。尝试从不同位置读取另一个XML文件(小型)。

对我来说看起来像是防火墙问题!

一旦您使用cURL发送了伪造的用户代理标头,如vartec所指出的,将XML缓存到服务器上可能是个好主意。 对于天气来说,可能一个小时是个不错的时间(如果RSS更新更频繁,请尝试使用15分钟)。

一经保存到您的服务器本地,读取和解析XML将会更快。

也要记得,RSS确实声明了“禁止再分配”。如果我没记错的话,有几个免费的在线天气RSS源,也许你应该尝试另一个。





相关问题
热门标签