Интересно почитать… Блог в котором есть много интересной информации…

29 января 2013

Установка базы IP адресов со странами и городами

Категория: программирование — dmitriano @ 17:01

Нашел в интерне базу IP адресов с городами, ссылки: http://habrahabr.ru/post/120872/, http://netload.biz/2011/12/31/geoip5/ . База неточная, но лучше чем ничего. Поставить её несложно, однако, при установке самой базы и обновления были некоторые нюансы, может быть кому-то будет интересно почитать…

  1. Выполняем скрипт geo_update_2011_12.sql и затем сразу geo_update_2011_12.sql. Мне лично пришлось заменить “TYPE=MyISAM” на “ENGINE=MyISAM” в каждом скрипте (У меня MySQL Ver 14.14 Distrib 5.5.29, for debian-linux-gnu (i686) using readline 6.2)
  2. Скачиваем и распаковываем три файла http://geolite.maxmind.com/download/geoip/database/GeoIPCountryCSV.zip, http://geolite.maxmind.com/download/geoip/database/GeoLiteCity_CSV/ и http://ipgeobase.ru/files/db/Main/geo_files.zip в каталог net_update чтобы он выглядел следующим образом:
    cidr_optim.txt
    cities.txt
    db.php
    GeoIPCountryWhois.csv
    GeoLiteCity-Blocks.csv
    GeoLiteCity-Location.csv
    lib.php
    readme.txt
    update_maxmind.php
    update_ru.php
  3. Запускаем скрипты обновления из браузера, предварительно увеличив максимальное время выполнения скрипта, см http://rtcamp.com/tutorials/increase-php-script-execution-time-with-nginx/ или с командной строки, см http://www.ozonesolutions.com/programming/2011/09/execute-php-5-script-command-line-ubuntu-linux/, что намного правильнее, так как в этом случае вывод виден по мере появления, а не на момент завершения скрипта:
    $ php5 update_ru.php
    Added countries blocks: 118884
    Added cities blocks: 43355
    $ php5 ./update_maxmind.php Added countries blocks: 97897 
    update net_city_ip set `verified`=1 where city_id=244

    update_maxmind.php почему-то не проходит, как видно из кода, падает в этом месте:

    // Отмечаем блоки проверенных городов
    $sql = "select * from net_city";
    $result = mysql_query($sql);
    while ($row = mysql_fetch_array($result)) {
        $city_id = $row['id'];
        $usql = "update net_city_ip set `verified`=1 where city_id=$city_id";
        mysql_query($usql) or die($usql);
    }

    оказывается, всё очень просто – нужно убрать кавычки в одном запросе, то есть заменить строчку 81:

    // Обновляем города
    $fp = fopen ("./GeoLiteCity-Blocks.csv", "r");
    if ($fp) {
        // Удаляем все старые записи
        mysql_query("truncate net_city_ip");
        // Добавляем временное поле
        mysql_query("alter table net_city_ip add column `verified` bit(1) null default '0'");

    на

    mysql_query("alter table net_city_ip add column `verified` bit(1) null default 0");

    теперь вроде всё нормально:

    $ php5 update_maxmind.php
    Added countries blocks: 97897
    Added cities blocks: 1520015
Линии 3D/Шарики 3D

Комментариев нет »

No comments yet.

RSS feed for comments on this post. TrackBack URL

Leave a comment

SlogPost.ru