我正在尝试获取远程XML文件的一部分,在这种情况下,通过Google地图获取邮政编码的经度和纬度.这是我目前使用的功能:
function slug_get_coordinates( $zip ) {
$url = "http://maps.googleapis.com/maps/api/geocode/xml?address={$zip}&sensor=false";
$result = simplexml_load_file( $url );
$coordinates = $result->result->geometry->location;
return $coordinates;
}
这有时在长页面加载后起作用,但通常会超时.有没有办法直接获取我需要的XML文件部分而无需加载整个事物或其他方式来优化它?
解决方法:
除非服务提供此功能,否则您无法基于选择器(例如XPath / CSS)请求部分响应.
关于效率,我建议尽可能详细地分解请求时间,以找出某个请求需要一段时间的原因. cURL对此有很好的支持,例如:
$zip = urlencode('1 infinite loop');
$ch = curl_init("http://maps.googleapis.com/maps/api/geocode/xml?address={$zip}&sensor=false");
curl_exec($ch);
print_r(curl_getinfo($ch));
Array
(
...
[total_time] => 0.11955
[namelookup_time] => 0.02996
[connect_time] => 0.035803
[pretransfer_time] => 0.035874
...
[size_upload] => 0
[size_download] => 1737
[speed_download] => 14529
[speed_upload] => 0
[download_content_length] => -1
[upload_content_length] => 0
[starttransfer_time] => 0.119444
[redirect_time] => 0
...
)
使用此数据,您可以制定适当的方法来处理该问题.缓存响应可能会减少重复搜索的请求时间,但它可能不适用于您的特定情况.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。