Здравствуйте, возникла задача определения города по IP-адресу. Скачал с сайта http://ipgeobase.ru (думаю все про него знают) свежую базу geo_files.tar.gz. Там два файла: cities.txt (города) и cidr_optim.txt (IP-адреса). По идее в файле cidr_optim.txt должны быть айдишники городов из первого файла, но почему-то я их не вижу там.
Вот строчка из второго файла: 33554432 34603007 2.0.0.0 - 2.15.255.255 FR - Диапазоны айпишников есть, а айдишника нет (вместо него тире).
Может я чего-то не понимаю, помогите, пожалуйста. Может есть другие базы с других сайтов. Заранее спасибо.
http://seogram.ru - Продвижение сайтов с оплатой только за потенциальных клиентов.
К чему мучения? XML интерфейс не подходит? http://blog.ipgeobase.ru/?p=76 В комментариях есть кусок кода, все просто и понятно. Да и ограничений никаких пока что не накладывают, так что можно пользоваться.
На данный момент думать особо не хочется, скачал файл, поразбирался что есть что.
- cities.txt айдишники городов идут первыми, к примеру Краснодар - 1427 - во втором файле айдишники располагаются в конце строки. Если вместо айди прочерк, то получается, что город неизвестен, а известна только страна. Для Краснодара один из диапазонов:
1 и 2 цифры - как я понял количество айпишников (следующий диапазон начинается с 1307123712), далее диапазон, страна, и айдишник города.
Сейчас на ночь что-то не могу придумать нормального алгоритма поиска по всей этой базе. Но в цикле смотреть все диапазоны в поисках нужного это как-то не этично и медленно, даже предлагать не буду.
Как вариант загнать всю эту базу в mysql, сделать индексы по айпишнику (первые два байта), тогда выборки будут быстрыми.