Geoip2 Update

Geoip2 Update - это PHP инструментарий для обновления GeoLite2 и GeoIP2 баз данных компании Maxmind через скрипты или через Composer.

tronovav/geoip2-update

GitHub downloads Latest Stable Version

ТРЕБОВАНИЯ


Минимальное требование к этой библиотеке - чтобы ваш веб-сервер поддерживал PHP >= 5.3.0 с расширением curl и дополнительным расширением zip, если вы хотите обновлять базы данных csv.

УСТАНОВКА


Если у вас нет Composer, вы можете установить его, следуя инструкциям по адресу getcomposer.org

Затем вы можете установить эту библиотеку, используя следующую команду:

composer require tronovav/geoip2-update

КОНФИГУРАЦИЯ


1. Обновление баз GeoIP2 или GeoLite2 с помощью Composer.

Чтобы обновить базы данных Geoip2 через Composer, вы можете настроить вызов обновления в вашем composer.json. Каждый раз, когда вызывается команда composer update, библиотека будет проверять наличие обновлений на серверах Maxmind и при необходимости обновит базы данных Geoip2. Вы также можете обновить только базы данных GeoIP2 без обновления всех зависимостей проекта: composer update tronovav/geoip2-update

1.1. Встроенные параметры конфигурации:
#composer.json - use in-line configuration options

"scripts": {
    "post-update-cmd": [
        "tronovav\\GeoIP2Update\\ComposerClient::run"
    ]
},
"extra": {
    "tronovav\\GeoIP2Update\\ComposerClient::run": {
        "license_key": "MAXMIND_LICENSE_KEY",
        "dir": "DESTINATION_DIRECTORY_PATH",
        "editions": ["GeoLite2-ASN", "GeoLite2-City", "GeoLite2-Country"]
    }
}

Параметры в секции scripts:

Просто добавьте строку "post-update-cmd": "tronovav\\GeoIP2Update\\ComposerClient::run" как показано в примере, для обновления баз GeoLite2 и GeoIP2.

Параметры в секции extra:

  • license_key (обязательный) - вы можете найти информацию о вашем лицензионном ключе на станице ваших ключей на сайте Maxmind.
  • dir (обязательный) - абсолютный путь к локальному каталогу хранения баз данных Geoip2. Вы так же можете использовать псевдоним @composer, как часть пути относительно вашего composer.json. Например @composer/путь-к-директории. Скрипт сам найдет абсолютный путь к файлу composer.json в вашем проекте и директории для хранения баз данных Geoip2 относительно composer.json. Вы также можете указать @composer/../путь-к-директории. Главное, чтобы вы сами понимали, какой путь к хранению баз данных вы указываете.
  • editions - список выпусков базы данных, которые вы хотите обновлять. Maxmind предлагает базы данных для бесплатного скачивания: GeoLite2-ASN, GeoLite2-City, GeoLite2-Country, GeoLite2-ASN-CSV, GeoLite2-City-CSV, GeoLite2-Country-CSV. Если вы не укажете параметр editions, то будут обновлены базы данных: GeoLite2-ASN, GeoLite2-City, GeoLite2-Country. В противном случае будут обновлены только те редакции, которые вы указали. Смотрите доступные редакции в своей учетной записи на сайте Maxmind.
1.2. Конфигурации с помощью файла GeoIP.conf:

Вместо параметров license_key и editions вы можете указать путь к файлу конфигурации. Формат конфигурационного файла полностью соответствует рекомендациям maxmind.com на странице документации: Получить GeoIP.conf с информацией об учетной записи.

#composer.json - use GeoIP.conf file

"scripts": {
    "post-update-cmd": [
        "tronovav\\GeoIP2Update\\ComposerClient::run"
    ]
},
"extra": {
    "tronovav\\GeoIP2Update\\ComposerClient::run": {
        "dir": "DESTINATION_DIRECTORY_PATH",
        "geoipConfFile": "DESTINATION_GEOIP_CONFIG_FILE"
    }
}

Параметры в секции scripts:

  • dir (обязательный) - абсолютный путь к локальному каталогу хранения баз данных Geoip2. Вы так же можете использовать псевдоним @composer, как часть пути относительно вашего composer.json. Например @composer/путь-к-директории. Скрипт сам найдет абсолютный путь к файлу composer.json в вашем проекте и директории для хранения баз данных Geoip2 относительно composer.json. Вы также можете указать @composer/../путь-к-директории.
  • geoipConfFile (обязательный) - абсолютный путь к конфигурационному файлу. Вы так же можете использовать псевдоним @composer, как часть пути относительно вашего composer.json. Например @composer/../GeoIP.conf

2. Обновление баз GeoIP2 или GeoLite2 из php приложения.

Вы можете использовать этот способ для обновления баз GeoIP2 и GeoLite2 из вашего php приложения или используя Cron в Linux, или Task Scheduler в Windows.

2.1. Встроенные параметры конфигурации:
// PHP use in-line configuration options
require 'vendor/autoload.php';

// configuration
$client = new \tronovav\GeoIP2Update\Client(array(
    'license_key' => 'MAXMIND_LICENSE_KEY',
    'dir' => 'DESTINATION_DIRECTORY_PATH',
    'editions' => array('GeoLite2-ASN', 'GeoLite2-City', 'GeoLite2-Country'),
));
// run update
$client->run();

Параметры:

  • license_key (обязательный) - вы можете найти информацию о вашем лицензионном ключе на станице ваших ключей на сайте Maxmind.
  • dir (обязательный) - абсолютный путь к локальному каталогу хранения баз данных Geoip2 и GeoLite2.
  • editions - список выпусков базы данных, которые вы хотите обновлять. Maxmind предлагает базы данных для бесплатного скачивания: GeoLite2-ASN, GeoLite2-City, GeoLite2-Country, GeoLite2-ASN-CSV, GeoLite2-City-CSV, GeoLite2-Country-CSV. Если вы не укажете параметр editions, то будут обновлены базы данных: GeoLite2-ASN, GeoLite2-City, GeoLite2-Country. В противном случае будут обновлены только те редакции, которые вы указали. Смотрите доступные редакции в своей учетной записи на сайте Maxmind.
2.2. Конфигурации с помощью файла GeoIP.conf:

Вместо параметров license_key и editions вы можете указать путь к файлу конфигурации. Формат конфигурационного файла полностью соответствует рекомендациям maxmind.com на странице документации: Получить GeoIP.conf с информацией об учетной записи.

// PHP use GeoIP.conf file
require 'vendor/autoload.php';

// configuration
$client = new \tronovav\GeoIP2Update\Client(array(
    'dir' => 'DESTINATION_DIRECTORY_PATH',
    "geoipConfFile" => "DESTINATION_GEOIP_CONFIG_FILE",
));
// run update
$client->run();

Параметры:

  • dir (обязательный) - абсолютный путь к локальному каталогу хранения баз данных Geoip2 и GeoLite2.
  • geoipConfFile (обязательный) - абсолютный путь к файлу конфигурации GeoIP.conf.

После обновления баз данных Geoip2 и GeoLite2, при необходимости, вы можете узнать информацию о результатах:

// PHP update info
...
print_r($client->updated()); // update result
print_r($client->errors()); // update errors

АТОМАРНОСТЬ ОБНОВЛЕНИЯ БАЗ ДАННЫХ GeoIP2 и GeoLite2


Атомарность операции обновления реализована на уровне файлов базы данных.

Структура баз данных mmdb и csv различна. Базы данных mmdb состоят из одного файла базы данных. Таким образом, при обновлении баз данных mmdb операция полностью атомарна и исключаются ошибки, связанные с кратковременным отсутствием файла mmdb во время обновления базы данных. Поскольку файлы атомарно заменяются новыми.

Базы данных CSV состоят из нескольких файлов. При обновлении баз данных CSV, каждый файл CSV также заменяется атомарно, без всякой вероятности того, что файл пропадет во время обновления.