На примере, для чего нужна вторая проверка
IP 89.218.220.231 (Казахстан)
Запрос
select * from (select * from net_ru where begin_ip<=1507515623 order by begin_ip desc limit 1) as t where end_ip>=1507515623
ничего не возвращает, потому что IP нет в российских диапазонах
А если убрать второе условие, то вернется соседний диапазон и будет сделан неверный вывод, что IP из Москвы
Диапазоны не пересекаются, но есть «дыры», пустоты между диапазонами, в которые может попасть (и даже часто попадает) первое условие. Без второй проверки в такой ситуации запрос вернет соседний диапазон, что не правильно.
Можно реализовать вторую проверку на стороне скрипта (php и т.п.), но я решил оставить эту логику в sql.
PHP с большими файлами работает относительно медленно, а на Perl я так и не подсел, поэтому с бинарниками помочь не смогу.
На моем VPS запросы к базе отрабатывают быстро (Apache создает гораздо большую нагрузку). Но размер базы (и особенно индекса) немаленький, на виртуальном хостинге таких клиентов не любят. Вы можете попробовать её на виртуальном хостинге, но потом не говорите, что я вас не предупредил.
На досуге посмотрю базу по вашей ссылке, но не верю, что города всего мира можно уместить в 4 метра.
Увы, Вы правы. Обнаружились новые диапазоны российских ip (в основном Москва и Питер), которых не было в базе на момент сборки. После НГ сделаю обновление.
Таки в предыдущем топике и в личном сообщении я просил Вас показать правильное (на Ваш взгляд) решение проблемы с индексами. А в ответ тишина. Критиковать – это мы все умеем.
Безусловно. Вижу в логе неудачных проверок несколько московских и питерских диапазонов, которых не было в базе ipgeobase.ru два дня назад.
Планирую делать периодические обновления.
По поводу сборщика мусора и увеличения скорости — есть результаты исследования на реальных задачах? Не сомневаюсь, что на синтетических тестах всё красиво, но в жизни обычно всё не так.
Неймспейсы — это интересно, не знал.
Чем тернарный оператор в 5.3 отличается от аналогичного в 5.2?
В свое время PHP подкупил меня своей простотой и доступностью. Вполне рабочий код можно писать без каких-то сложных архитектурных изысков, с помощью десятка функций. Жаль, это время уходит.
В двух словах, чем он так хорош?
Я вижу только недостатки:
— из-за «устаревших» функций будут проблемы со старым кодом
— из-за goto будет больше говнокода
Объясните, в чём сложность поменять ссылки на "./files/images/bg.png"? Вижу, что ни один браузер не может этого сделать, но почему?
Я не понимаю мании Оперы к переименованию файлов. Конечно, файлы из неопределенного числа папок складываются в одну папку и поэтому нужно следить за уникальностью имен файлов. Но файл style.css всего один, зачем переименовывать его в style000.css?
На примере, для чего нужна вторая проверка
IP 89.218.220.231 (Казахстан)
Запрос
select * from (select * from net_ru where begin_ip<=1507515623 order by begin_ip desc limit 1) as t where end_ip>=1507515623
ничего не возвращает, потому что IP нет в российских диапазонах
А если убрать второе условие, то вернется соседний диапазон и будет сделан неверный вывод, что IP из Москвы
Можно реализовать вторую проверку на стороне скрипта (php и т.п.), но я решил оставить эту логику в sql.
select * from (select * from net_ru where begin_ip<=$int order by begin_ip desc limit 1) as t where end_ip>=$int
Ключ по begin_ip (в прошлой версии было иначе)
На моем VPS запросы к базе отрабатывают быстро (Apache создает гораздо большую нагрузку). Но размер базы (и особенно индекса) немаленький, на виртуальном хостинге таких клиентов не любят. Вы можете попробовать её на виртуальном хостинге, но потом не говорите, что я вас не предупредил.
На досуге посмотрю базу по вашей ссылке, но не верю, что города всего мира можно уместить в 4 метра.
«Родной» язык — это какой?
За ссылку спасибо.
Планирую делать периодические обновления.
Либо обман, либо путают среднюю месячную зарплату со средней стоимостью проекта.
Неймспейсы — это интересно, не знал.
Чем тернарный оператор в 5.3 отличается от аналогичного в 5.2?
В свое время PHP подкупил меня своей простотой и доступностью. Вполне рабочий код можно писать без каких-то сложных архитектурных изысков, с помощью десятка функций. Жаль, это время уходит.
Я вижу только недостатки:
— из-за «устаревших» функций будут проблемы со старым кодом
— из-за goto будет больше говнокода
Я не понимаю мании Оперы к переименованию файлов. Конечно, файлы из неопределенного числа папок складываются в одну папку и поэтому нужно следить за уникальностью имен файлов. Но файл style.css всего один, зачем переименовывать его в style000.css?
Жаль, нельзя удалить.
Если закрыть глаза на то, что поменялись имена файлов и структура (вложенность) папок. Зачем она это делает?