Wednesday, August 25, 2010

Проблемы с GeoIP.

Наткнулся на данную проблему при настройке Simple TDS.
Fatal error: Cannot redeclare geoip_country_code_by_name() in /home/public_html/engine/modules/geoip-api/geoip.inc on line 353
Оказалось, что в php5 эти функции уже задействованы. Можно решить эту проблему простым способом, просто делаем проверку для двух функций:
if (!function_exists('geoip_country_code_by_name')){
function geoip_country_code_by_name($gi, $name) {
$country_id = geoip_country_id_by_name($gi,$name);
if ($country_id !== false) {
return $gi->GEOIP_COUNTRY_CODES[$country_id];
}
return false;
}
}
if (!function_exists('geoip_country_name_by_name')){
function geoip_country_name_by_name($gi, $name) {
$country_id = geoip_country_id_by_name($gi,$name);
if ($country_id !== false) {
return $gi->GEOIP_COUNTRY_NAMES[$country_id];
}
return false;
}
}

И проблема решена.
Также столкнулся с тем, что часто базы не совсем свежие.
В бесплатной версии базы обновляются раз в месяц, для простых нужд её вполне хватает.
Обновить базу можно по следующему линку:
Надо просто заменить скачанный файл GeoIp.dat на вашем хостинге.
У меня стало идентифицировать на 20% больше стран, после проделанных манипуляций.
Не забывайте периодически обновлять файл, чтобы освежить диапазоны IP.

No comments:

Post a Comment