使用ipinfo.io的IP位置


IP location using ipinfo.io

我需要从访问者IP获取州和国家。我将使用国家信息来展示定制产品。至于国家信息,它将不用于相同的目的,而只用于记录,以跟踪需求。

我在这个网站上找到了一个使用ipinfo的实例。

function ip_details($ip) {
$json = file_get_contents("http://ipinfo.io/{$ip}/json");
$details = json_decode($json);
return $details;

}

然而,因为我不需要完整的细节,我看到该网站只允许抓取单个字段。所以我正在考虑使用这2:

1) ipinfo.io/{ip}/地区2) ipinfo.io/{ip}/国家

一样:

function ip_details($ip) {
$ip_state = file_get_contents("http://ipinfo.io/{$ip}/region");
$ip_country = file_get_contents("http://ipinfo.io/{$ip}/country");
return $ip_state . $ip_country;

}

还是说:

  function ip_details($ip) {
$json = file_get_contents("http://ipinfo.io/{$ip}/geo");
$details = json_decode($json);
return $details;

}

最后一个在url中有"/geo",以减少第一个选择的"/json"。目前,我倾向于使用2 file_get_contents上面的第二个选项,但想知道它是否比最后一个在数组中拥有它的慢。只是想尽量减少加载时间。或者,如果可以提供任何其他方法,我将不胜感激。

简而言之,使用第二个选项,使用单个请求(file_get_contents在解析url时生成get请求):

结果是一个简单的数组,通过它的键访问你想要的细节:

function ip_details($ip) {
    $json = file_get_contents("http://ipinfo.io/{$ip}/geo");
    $details = json_decode($json);
    return $details;
}
$ipinfo = ip_details('86.178.xxx.xxx');
echo $ipinfo['country']; //GB
//etc

关于速度差异- 99%的开销是网络延迟,所以发出一个请求并解析您需要的详细信息将比为单个详细信息发出2个单独的请求快得多