Комментарии 35
Спасибо.
В архиве обнаружил файл lib.php, в котором хранятся две функции для преображования ip в число и обратно. Скажите, а чем Вас не устроили втроенные функции PHP: ip2long (long2ip)?
В архиве обнаружил файл lib.php, в котором хранятся две функции для преображования ip в число и обратно. Скажите, а чем Вас не устроили втроенные функции PHP: ip2long (long2ip)?
+1
Справедливое замечание. Раньше я не знал об этих функциях, сейчас не хочется без нужды править рабочий код.
+4
НЛО прилетело и опубликовало эту надпись здесь
каким?
0
php ip2long() != mysql inet_aton(); php long2ip() != mysql inet_ntoa()
в этом всё дело. мускульная версия возвращает unsigned и поэтому с адресами из похапе не получится работать в мускуле и наоборот
в этом всё дело. мускульная версия возвращает unsigned и поэтому с адресами из похапе не получится работать в мускуле и наоборот
+1
А с функциями автора проблем не будет?
Вот например, одна из них:
Вот например, одна из них:
// Преобразуем ip в число
function ip2int($ip)
{
$part = explode(".", $ip);
$int = 0;
if (count($part) == 4) {
$int = $part[3] + 256 * ($part[2] + 256 * ($part[1] + 256 * $part[0]));
}
return $int;
}
0
Что касается ip2long, то можно сделать вот так:
И проблем с inet_aton() не должно быть.
$ip_dotted = '127.0.0.1';
$ip_long = sprintf("%u", ip2long($ip_dotted));
И проблем с inet_aton() не должно быть.
+2
НЛО прилетело и опубликовало эту надпись здесь
В избранное, спасибо!
0
+1
0
Вопрос: А есть ли подобные базы с ipv6 адресами?
+1
Вот спасибо!
0
>> поэтому операция требует значительных ресурсов и времени (~30-60 минут).
В вашем скрипте используется одиночные инсерты.
Что бы увеличить скорость работы скрипта сделайте:
insert into (..) values (...), (...), (...)… (...) до 100-1000 таких блоков, больше не нужно. Скорость выполнения повысится на порядок.
В вашем скрипте используется одиночные инсерты.
Что бы увеличить скорость работы скрипта сделайте:
insert into (..) values (...), (...), (...)… (...) до 100-1000 таких блоков, больше не нужно. Скорость выполнения повысится на порядок.
+4
дня за три до этого поста я скачал вашу базу:)
у меня несколько вопросов:
1) net_city_ip, net_ru, net_ru_2, net_su — почему несколько таблиц для связи ip и городов? чем они отличаются?
2) в таблице net_city есть поле region — он уникален в пределах страны? Что это вообще за обозначение такое? ( дайте ссылку на википедию, если можно )
Кстати в вашей базе я нашел дубль с одинаковым country_id и region — город Мюнхен в Германии. Вы бы скриптом прошлись для удаления записей с одинаковым именем, country_id и region…
у меня несколько вопросов:
1) net_city_ip, net_ru, net_ru_2, net_su — почему несколько таблиц для связи ip и городов? чем они отличаются?
2) в таблице net_city есть поле region — он уникален в пределах страны? Что это вообще за обозначение такое? ( дайте ссылку на википедию, если можно )
Кстати в вашей базе я нашел дубль с одинаковым country_id и region — город Мюнхен в Германии. Вы бы скриптом прошлись для удаления записей с одинаковым именем, country_id и region…
0
1.
net_city_ip — блоки IP городов из maxmind (весь мир)
net_ru — блоки IP городов из ipgeobase (Россия и Украина)
(обе таблицы привязаны к справочнику net_city)
net_ru_2 и net_su больше не используются (были в прошлой версии базы)
2. Поле region взято из данных maxmind и содержит много ошибок (может быть кроме штатов США).
net_city_ip — блоки IP городов из maxmind (весь мир)
net_ru — блоки IP городов из ipgeobase (Россия и Украина)
(обе таблицы привязаны к справочнику net_city)
net_ru_2 и net_su больше не используются (были в прошлой версии базы)
2. Поле region взято из данных maxmind и содержит много ошибок (может быть кроме штатов США).
0
Для последнего проекта не нашли ничего лучше для определения региона в России, чем ipgeobase. Есть модуль для интеграции ipgeobase в django.
Ваш вариант, конечно, намного интересней, но до июня обновлений вроде не было базы? А последний апдейт был зимой, кажется.
Ваш вариант, конечно, намного интересней, но до июня обновлений вроде не было базы? А последний апдейт был зимой, кажется.
+1
Если вам нужна только Россия и/или Украина, то однозначно лучший вариант ipgeobase. Основное отличие моей сборки в том, что за счет maxmind кое-как определяет города по всему миру (пока далеко от идеала, есть над чем работать) и есть названия на русском и английском (иногда с ошибками).
0
Меня в основном смущает, что база до сего дня не обновлялась, а сейчас обновляется, но без добавления новых городов.
Ну и ~4 миллиона select-ов и ~2 миллиона insert-ов это, конечно, жестоко. С инсёртами подсказали уже выше, я думаю селекты тоже можно уменьшить как-нибудь.
Ну и ~4 миллиона select-ов и ~2 миллиона insert-ов это, конечно, жестоко. С инсёртами подсказали уже выше, я думаю селекты тоже можно уменьшить как-нибудь.
0
Спасибо, нужная вещь. Косяков правда хватает. Например, с 95.28.226.140 демка меня отправляет в Питер (а я в Москве).
0
НЛО прилетело и опубликовало эту надпись здесь
Очевидное решение — сделать автоподстановку страны и города по IP с возможностью ручного выбора пользователем. Если скрипт угадает правильно, то посетителю не придется делать лишние движения, а не угадает — посетитель исправит ошибку.
По поводу Qt4 ничего не могу сказать, не в теме.
По поводу Qt4 ничего не могу сказать, не в теме.
+1
НЛО прилетело и опубликовало эту надпись здесь
Хотелось бы регионы получить для всех стран. В net_city номер в поле region для всех проставлен, но таблицы нет соответсвующей. Можно выцепить данные регионы РФ и Украины из другой таблицы, но этого мало. Ведь эти данные должны где-то быть, region то не просто так наверно проставлялся?
0
Справочник регионов www.maxmind.com/app/fips10_4
Но как минимум по России в этом справочнике есть ошибки и дубли. Другие страны не проверял.
Но как минимум по России в этом справочнике есть ошибки и дубли. Другие страны не проверял.
0
В БД есть 7 несоответствий между net_city и net_t_city, выявляются по запросу:
Две ошибки:
ID 33912 из net_city ошибочно указано, должен быть Ростов, а указан Ростов-на-Дону.
ID 75169 из net_city так же не верно русское название, написан Арзамас, по координатам это Саров.
Остальные 5 — разные написания, не критично (с дефисами и сокращениями).
А для чего таблица net_t_dub, кто-нибудь может подсказать?
SELECT * FROM `net_city`
INNER JOIN `net_t_city`
WHERE
net_city.id = net_t_city.link_id AND
net_city.name_ru <> net_t_city.name
Две ошибки:
ID 33912 из net_city ошибочно указано, должен быть Ростов, а указан Ростов-на-Дону.
ID 75169 из net_city так же не верно русское название, написан Арзамас, по координатам это Саров.
Остальные 5 — разные написания, не критично (с дефисами и сокращениями).
А для чего таблица net_t_dub, кто-нибудь может подсказать?
0
Очень было бы здорово, если появился бы апйдет. Спасибо!
0
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.
База GeoIP – страны и города, июнь 2011 (+скрипт обновления)