Oh and I tested the end result in my hhvm application. By searching an IP and getting back the result.
Works nicely. Now to do the real result and test on my live-test servers.
private function gen_geo_location($click_ip)
{
$ip = explode(".", $click_ip);
list($host) = array_slice($ip, -1); //host
array_pop($ip);
$network = implode(".", $ip); //network
$as_data = array(
'bin' => 'cache',
'table' => 'geo_ip',
'key' => $network
);
$row = $this->aerospike_funcs->get($as_data);
if ($row)
{
$keys = array_keys($row);
sort($keys);
foreach($keys as $key => $value)
{
if ($host <= $value)
{
$g_row = $row[$value];
break;
}
}
$data = array(
'ip_from' => $g_row['ip_from'],
'ip_to' => $g_row['ip_to'],
'click_isp' => $g_row['isp_name'],
'country_code' => $g_row['country_code'],
'country_name' => $g_row['country_name'],
'region_code' => $g_row['region_code'],
'region_name' => $g_row['region_name'],
'city_code' => $g_row['city_code'],
'city_name' => $g_row['city_name'],
'isp_name' => $g_row['isp_name'],
'carrier' => $g_row['mobile_carrier']
);
}
else
{
$data = array(
'ip_from' => 'No IP Address',
'ip_to' => 'No IP Address',
'click_isp' => 'No IP Address',
'country_code' => 'NA',
'country_name' => 'No IP Address',
'region_code' => 'NA',
'region_name' => 'No IP Address',
'city_code' => 'No IP Address',
'city_name' => 'No IP Address',
'isp_name' => 'No IP Address',
'carrier' => 'No IP Address'
);
}
return $data;
}