Comments 34
TabGeo бесплатный пакет? Как часто обновляется? GeoIP с припиской Lite содержит далеко не полный перечень диапазонов. Платная версия точнее, но удовольствие дорогое
0
Для nodejs руками писать парсер?
0
Скажите, почему у вас весь обзор (сравнение) взято с сайта TabGeo?
Я как-то надеялся на независимое тестирование, а тут даже данные идентичны.
Я как-то надеялся на независимое тестирование, а тут даже данные идентичны.
+1
мне кажется dostelon и есть автор этой базы :)
0
Я — автор данной базы и драйвера.
Делал бесплатный продукт, который будет лучшим. Обогнать GeoIP не составило труда, а вот с Sypex пришлось постараться: два раза менял структуру базы и раз пять переписывал драйвер. Несколько раз хотел бросать разработку ибо попадал в тупики.
Делал бесплатный продукт, который будет лучшим. Обогнать GeoIP не составило труда, а вот с Sypex пришлось постараться: два раза менял структуру базы и раз пять переписывал драйвер. Несколько раз хотел бросать разработку ибо попадал в тупики.
+4
А почему код не на GitHub, раз бесплатно? И документация по формату базы не помешала бы, чтобы портировать драйвер на другие языки…
+2
На TabGeo не хватает демки
+1
Не хватает базы городов.
+1
Города (хотя бы российские) — планируется?
0
Планируется. Но это титанический труд, так как для страны есть строка «country», а с городами во whois — кто на что горазд (вписывают их и криво, и косо).
0
А как обстоят дела с определением города?
Я пока лучшего (наиболее точного) решения чем GeoLite для определения страны + уточнение по базе с ipgeobase.ru для RU локаций не нашел.
А так слишком громкий заголовок, если это только для определения страны.
На реальных проектах, как раз чаще нужно именно страна+город (гипермаркеты, локальные сервисы обслуживания, доставки, субдомены и т.д.).
Лично я ни разу не встречал задачи определить просто страну. Всегда в комплексе.
Я пока лучшего (наиболее точного) решения чем GeoLite для определения страны + уточнение по базе с ipgeobase.ru для RU локаций не нашел.
А так слишком громкий заголовок, если это только для определения страны.
На реальных проектах, как раз чаще нужно именно страна+город (гипермаркеты, локальные сервисы обслуживания, доставки, субдомены и т.д.).
Лично я ни разу не встречал задачи определить просто страну. Всегда в комплексе.
+3
1. Если слить соседние диапазоны из одной страны в один, то «точность базы» по вашей логике уменьшится, что неправда.
2. Приложение на python с загруженной в память базой диапазонов на виртуалке Ubuntu дает примерно сто пятьдесят тысяч ответов на запрос страны по IP в секунду.
Для того, чтобы решать только эту задачу (только страна), годятся очень простые и эффективные средства.
2. Приложение на python с загруженной в память базой диапазонов на виртуалке Ubuntu дает примерно сто пятьдесят тысяч ответов на запрос страны по IP в секунду.
Для того, чтобы решать только эту задачу (только страна), годятся очень простые и эффективные средства.
0
Не планируете ли сделать выгрузку базы в более читабельном виде? Там, конечно, кода на 10 строк и структура понятна, но из плейнтекст-формата было бы удобнее банальным шелл-скриптом генерировать соответствующий блок конфигурации nginx для ngx_http_geo_module, который заведомо быстрее, чем любое решение на php, т.к. все грузится в память на этапе конфигурации nginx.
0
На днях сделаю выгрузку в csv, как у GeoIP.
0
Зипованый csv:
http://tabgeo.com/csv/v4/country/get/
http://tabgeo.com/csv/v4/country/get/
0
Сделайте лучше репозиторий на github и распространяйте через composer.
-1
Раз уж меня упомянули, прокомментирую :)
- Для начала, так мерять скорость алгоритмов бессмысленно, так как время инициализации скрипта занимает больше времени (причем в десятки раз), чем сам поиск IP. И вполне естественно, что чем менее функциональный php скрипт который нужно подключать, тем больше запросов в секунду он будет выдавать. Особенно, если не использовать кэширование байткода.
- Скорость как-то странно замеряна, похоже у SxGeo включен режим BATCH. Так как при тестировании с помощью ab (с параметрами -n 10000 -c 10, Apache 2.4.9 + PHP 5.5.10) получил результат 1200 SxGeo и 1500 TabGeo. Это без включения OPcache. Если же включить OPcache, то разница становится на уровне погрешности, оба скрипта показывают скорость в районе 2100 запросов в секунду (± 50). Так что, более высокая скорость выполнения TabGeo по сути только благодаря тому, что нужно меньше времени, чтобы интерпретировать php-код, который у TabGeo вполне естественно значительно меньше, так как работает только со странами, одним форматом базы, да и нет даже проверки на валидность IP. К примеру:
echo tabgeo_country_v4('33.355.66.77'); // Выдаёт US, без всяких предупреждений или ошибок
Но при этом в batch режиме (когда один раз инициализация и много раз поиск IP) SxGeo работает в 5 раз быстрее без кэширования базы, и в 10 раз быстрее с кэшированием базы в памяти.
- Что касается точности, наличие большого количества диапазонов вообще ничего не говорит о точности. А тем более, когда вы берете данные из country в whois. Там зачастую бывает фигня написана. Для примера есть IP в которых указана страна RU, а дальше написано, что это Киев. GeoIP на этом раньше попадались, даже нашли какой-то поселок Киев на Дальнем Востоке.
Ну или еще пример 185.89.14.222 у вас он значится, как EU (хотя такой страны нет, и в SxGeo её нет), по сути этот IP просто входит в число IP-блоков принадлежащих RIPE, но он еще никакому реальному пользователю не присвоен. В SxGeo такие блоки считаются пустыми, и не учитываются в статистике.
- SxGeo изначально задумывался под BATCH режим, именно в таком режиме он будет работать, как демон, либо как модуль apache/nginx, а в таком режиме даже без кэширования он работает в 5-10 раз быстрее вашего решения, и на поиск каждого IP нужно лишь одно обращение к диску/кэшу.
+3
По этому и пришлось отказаться от оформления в виде класса, ибо жрет немерено времени и памяти.
Кстати, я размышлял: делать мне валидацию ip в функции или нет (одна строчка кода). И посчитал, что ip адрес должен быть провалидирован до передачи в функцию (ибо суть функции совсем не в валидации) и ip может быть использован в дальнейшем коде (или в предшествующем) и именно там надо проверять верность ip. Я бы сказал, что данное различие — идеологическое.
Это «мертвые» диапазоны, я посчитал их менее важными, где-то в базе они сохранились где-то нет, а код страны у них обычно возникает из-за склейки диапазонов (в aunic тьма таких мертвых диапазонов) — их отсутствие или наличие ничего не решает, с них никто не придет. Страны EU нет, но код есть (около 1 200 вхождений) — и определить некоторые ip точнее, чем EU — сложно. Тоже самое и с AP.
Определение некоторых связок страна-ip, как гадание на кофейной гуще, например, есть пул адресов, которые принадлежат водафону, метка страны у них GB, а используются они в Индии, такое, конечно не часто, но встречается.
Кстати, я размышлял: делать мне валидацию ip в функции или нет (одна строчка кода). И посчитал, что ip адрес должен быть провалидирован до передачи в функцию (ибо суть функции совсем не в валидации) и ip может быть использован в дальнейшем коде (или в предшествующем) и именно там надо проверять верность ip. Я бы сказал, что данное различие — идеологическое.
Это «мертвые» диапазоны, я посчитал их менее важными, где-то в базе они сохранились где-то нет, а код страны у них обычно возникает из-за склейки диапазонов (в aunic тьма таких мертвых диапазонов) — их отсутствие или наличие ничего не решает, с них никто не придет. Страны EU нет, но код есть (около 1 200 вхождений) — и определить некоторые ip точнее, чем EU — сложно. Тоже самое и с AP.
Определение некоторых связок страна-ip, как гадание на кофейной гуще, например, есть пул адресов, которые принадлежат водафону, метка страны у них GB, а используются они в Индии, такое, конечно не часто, но встречается.
0
del
0
Если нужна скорость, люди в первую очередь отказываются от php скриптов в пользу C api или к примеру ngx_http_geoip_module. Вот с ними бы и мерялись…
0
В целом, я за позицию «больше печенек вкусных и разных»…
Для меня важно не только страну определять, но и город. Так что пока мимо меня, но начало интригует.
Надо отметить, что еще будет сильным аргументом качество данных (а с исходными данными, в этом плане, по России — беда).
Пока вижу единственный неоспаримый плюс — возможность простого обновления базы из скрипта. У Sypex'а этого вроде нет.
Для меня важно не только страну определять, но и город. Так что пока мимо меня, но начало интригует.
Надо отметить, что еще будет сильным аргументом качество данных (а с исходными данными, в этом плане, по России — беда).
Пока вижу единственный неоспаримый плюс — возможность простого обновления базы из скрипта. У Sypex'а этого вроде нет.
0
До городов дело так и не дошло? :) Кстати, а как вы парсите whois? С какого сервиса берёте эту инфу? Может тоже попарсить :)
0
Не подскажите что сейчас с tabgeo стало? Вроде бы сайт не работает, обновлений нет.
0
Sign up to leave a comment.
Сравнение геолокационных бинарных баз и их драйверов: GeoIP, Sypex Geo, TabGeo