微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

通过PHP获取远程XML文件的一部分的最有效方法是什么?

我正在尝试获取远程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 举报,一经查实,本站将立刻删除。