lstaticl

lstaticl
Рейтинг
82
Регистрация
07.02.2008

Непонятно, вы в качестве ID статьи используете параметр SECTION_ID??? или что?

Плохо воровать данные с чужих сайтов.

А если сайт сам отдает, то по обыкновению через XML можно получать обновления. + В большинстве случаев люди предоставляют API для чтения этих XML-ек.

Но если очень надо, то можно заказать. Или найти универсальный парсер, настроить и "импортировать". 🚬

Ура, достойное решение найдено.

Спасибо Pan Russian. Я сразу не обратил внимания на ПО предоставленное у них на сайте. Там есть скрипт на Perl.

В этом скрипте используют метод дихотомического поиска. Вообщем-то для данной ситуации самый оптимальный вариант.

В итоге: В худшем случае алгоритм работает: 0.5сек; в лучшем: 0.05; среднее: 0.2сек.

Еще раз всем спасибо, если кому-то потребуется скрипт обхода могу дать в личку :)

Brand from Amber:
lstaticl, откуда 4-ре секунды?

  • SELECT count(*) FROM ipgeo - 237659 (т.е. моя поболе будет)
  • SELECT * FROM ipgeo WHERE SIPINT<=1334562353 AND EIPINT>=1334562353 LIMIT 1

Итог: полная информация (включая не только регион но и провайдера) менее чем за 4-ре секунды.

У меня без SQL, только по оригинальному файлу.

Всем спасибо за ответы. Про "Убрать разбивку на операторов" я уже думал. Есть 1 минус. Когда я обновлю базу, придется опять эту разбивку убирать и т.д.

maxmind все равно быстрее

По отзывам у maxmind плохое качество для РУ-траффа

Обрезание не очень пойдет. Есть вероятность, что диапазон который вырезали не имеется в точно таком виде в Базе. Наример:

У нас адрес: 62.220.34.168;

Получаем диапазон: 62.220.34.0 - 62.220.34.255;

В базе есть:

1) 62.220.0.0 - 62.220.38.255

2) 62.220.31.0 - 62.220.36.255

3) 62.220.37.0 - 62.220.37.255

4) 62.220.38.0 - 62.220.38.255

2,3,4 - входят в 1й. НО наш диапазон входит в 2, не в явном виде. Посему выйдет косяк :)

http://www.a1agregator.ru/

Это решение попробуйте прикрутить :)

+1 к ipgeobase. Спасибо Elles. Мне нужен тока РУ трафф.

lstaticl добавил 23.01.2010 в 12:29

Новая проблема: Базу решил брать ipgeobase. Как за минимальное время определить принадлежность поданного на вход IP к какому-либо региону?

У меня пока получается:

Берем левую и правую границу диапазона, проходим по всей базе и находим минимальный отступ нашего адреса от левой и правой границ. Считаем, что минимум - это и есть тот дипазон которому принадлежит данный адрес.

В базе 130к записей - следовательно такой процесс занимает не менее 3-4 сек. Хотелось бы свести время хотябы до 1сек, а лучше 0,5сек.

Как по-другому можно парсить?

Да никакой трудности с написанием нет) Вопрос изначально: Какую базу ИП использовать?? Возможно кто-то знает лучше чем те 2 которые я уже указал. Или кто-нить даст хороший отзыв о какой-либо базе приведенной выше.

ТДС) Траф распределять, если из МСК то на ссылку 1, если из СПБ -> link2 и т.д. Для этого надо геобазу с ИП. Я не вижу другого решения как можно разделить траф по географии

Всего: 201