我正在使用第三方API服务从IP地址获取国家/地区代码,并限制了将国家/地区代码存储在本地数据库表中的请求数量,并首先对其进行了查找。如果该记录不存在,它将获取国家/地区代码并将其存储以用于下一次查找。
但是,在数据库表中查找时,我看到的IP地址和国家/地区代码行被添加了大约20次。
这是怎么回事?我正在阅读此书,但我不明白为什么它会对表增加几笔,这毫无意义。
这正在导致API服务大规模中断,他们告诉我们我们正在滥用其请求限制。有人可以帮忙吗?
function get_country_code() {
// Check if site is local dev
if(get_bloginfo('url') == '###') {
global $wpdb;
$ip = $_SERVER['REMOTE_ADDR'];
$access_key = '###';
$record = $wpdb->get_row("SELECT * FROM wp_geoip WHERE ip = '$ip'");
if($record) {
// Return stored country code
return $record->country_code;
} else {
// Make request to ipapi and store country code into table
$ch = curl_init('http://api.ipapi.com/'.$ip.'?access_key='.$access_key.'');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$json = curl_exec($ch);
curl_close($ch);
$api_result = json_decode($json, true);
$wpdb->insert(
'wp_geoip',
array(
'ip' => $ip,
'country_code' => $api_result['country_code']
),
array(
'%s',
'%s'
)
);
// Return country code
return $api_result['country_code'];
}
} else {
return 'GB';
}
}