определение географии кроме GeoIP

Лысый

Новичок
определение географии кроме GeoIP

добрый день
стоит задача определения страны пользователя
знаю есть GeoIP
но это модууь аж апача, анализирует каждый запрос и к тому же при помощи своей БД

вопрос
если ли что нить менее сложное? возможно какая нить БД ИП адресов?
ресурс имеет немерянно хостов, оэтому производительность на первом плане

спасибо.
 

440hz

php.ru
на php.net можно посмотреть исходники сайта и увидеть как они это делают и довольно не плохо
 

slach

Новичок
http://www.maxmind.com/app/php
см. pure php

базу maxmind можно утянуть
по странам она ваще фриварная
 

Лысый

Новичок
то есть предлагаете взять БД от maxmind и использовать своими силами?
 

440hz

php.ru
Автор оригинала: Лысый
то есть предлагаете взять БД от maxmind и использовать своими силами?
ну не все же халявой пользоваться? надо и самому хоть что-нить написать ...
 

WP

^_^
я юзаю и доволен. бинарник.

-~{}~ 26.10.06 15:43:

з.ы. халява полная, качай и юзай.
 

Лысый

Новичок
да я не против сам написать ;)

и бинарник бы поставил

вопрос сколько он гад производительности ест?
 

vovanium

Новичок
Вообще если, есть желание могу дать потестить свой аналог GeoIP (в дальнейшем скрипт будет распространяться бесплатно, сейчас пока в режиме беты проходит доводку и проверку) :)

Скрипт на чистом PHP + бинарный файл своего формата, сравнения производились с GeoIP (pure php api). Итак основные отличия:
- производительность в 4-5 раз выше чем у GeoIP (тестировалось на выборке 1000 IPшек выбранных из реальной статистики сайта, у GeoIP ~ 1 800 IP/сек, у моего варианта ~ 10 000 IP/сек, без кэширования базы в памяти)
- маленький размер базы (база сделанная на основе GeoLite Country, в 2 раза меньше весит, 424 КБ против 929 КБ у GeoIP).
- небольшое количество обращений к диску, для определенения IPшек нужно 2 + 1 * n чтений с диска, у GeoIP нужно 20 + n * d (где n - количество IPшек, d - количество прыжков по бинарному дереву, примерно от 3 до 32)
- как и у GeoIP есть возможность кэширования базы в памяти, что повышает производительность, еще примерно на 20-25%.
- после окончания тестирования и релиза, база будет обновляться раз в неделю.
 

WP

^_^
И мне кинь. Есть база по городам? Есть ли вся инфа которая есть в GeoIP?
 

vovanium

Новичок
Вот выложил бету http://sypex.net/files/SypexGeo.rar , там в файле sxgeo_sample.php пример и описание как с этим классом работать. База создана на основе GeoLite Country этого месяца (чтобы было с чем сравнивать). В файле sxgeo_bench.php - пример для тестирования максимальной производительности. В случае обнаружения ошибок пишите на мыло или здесь.

Что касается баз, пока основное внимание будет уделено странам, т.е. более высокой точности и актуальности данных, а то за месяц в GeoLite много неточностей появляется. А потом постепенно, если будет спрос, начнем и остальные данные обрабатывать :)
 

WP

^_^
Я бы юзал, но если б не уступало по набору данных maxmind'у и было красивше.
 

vovanium

Новичок
А какой именно набор данных наиболее актуальный?
И что имеется ввиду под "было красивше"? :)
 

WP

^_^
Country, City, Lo/La (долгота и широта), можно еще ISP. В maxmind еще есть Area code и еще чего-то но это Imho менее актуально.
Покрасивше это значит менее требовательно к ресурсам и быстрее.
 

vovanium

Новичок
Изучил ситуацию, оказывается у GeoIP реально раз в неделю обновляется только база страны, города и организации обновляются раз в месяц (проверял по их онлайн демке на сайте). У остальных дела еще хуже, к примеру тот же ip2location все базы раз в месяц обновляются.

Кроме того у GeoIP много неточностей в городах, к примеру, довольно часто города Московской области считает Москвой, также в базе встречаются города синонимы типа Moskva - Moscow, Kiev - Kyiv и т.п. С городами Азии и Африки вообще большая напряженка, там многих просто нет.

Что касается Area code он у них есть только для Штатов и Канады.

В общем решили всё-таки заняться нормальной базой с максимальной детализацией. Кстати нужно ли такая инфа как netname (по идее удобная фишка если нужно что-то сделать с подсетью), Area code можно доставать для всех городов, а не только америкосовских, это же касается и почтовых индексов + как вариант можно еще добавить часовой пояс города.
 

WP

^_^
vovanium
Было бы классно, дерзай) netname полезная вещь, часовой пояс тоже пригодится.

А еще лучше, собрать сначала всю всю возможную информацию, вплоть до Area code, а потом написать костомайзер который сгенерирует базу лишь с используемыми полями.
А также хотелось бы видеть нормальный класс для работы с бинарником, а не как у GeoIP, где сначала инклюдится массив из файла 84 кб весом, который названия населенных пунктов содержит, а потом еще долго это все обрабатывает.

Ну и конечно нужно сделать поддержку shared memory.

Будет нужна помощь - обращайся.

К полезной информации можно добавить connection-type (lan/dsl/modem), и скорость коннекта предположительную.
 
Сверху