webmaster/maxmind-db-reader

MaxMind DB Reader API

dev-main 2024-08-16 07:07 UTC

This package is not auto-updated.

Last update: 2024-09-28 06:01:10 UTC


README

描述

这是读取 MaxMind DB 文件的 PHP API。MaxMind DB 是一种二进制文件格式,用于存储按 IP 地址子网(IPv4 或 IPv6)索引的数据。

安装(Composer)

我们建议使用 Composer 安装此软件包。

下载 Composer

在项目的根目录中运行以下命令以下载 Composer

curl -sS https://getcomposer.org/installer | php

现在你应该在项目目录中有了文件 composer.phar

安装依赖

在项目根目录中运行

php composer.phar require maxmind-db/reader:~1.0

现在你应该在项目目录中有了文件 composer.jsoncomposer.lock,以及目录 vendor。如果你使用版本控制系统,应该将 composer.json 添加到其中。

引入自动加载器

安装依赖后,你需要从你的代码中引入 Composer 自动加载器

require 'vendor/autoload.php';

安装(独立)

如果你出于某种原因不想使用 Composer,项目根目录中提供了一个自定义的 autoload.php。要使用库,只需包含该文件,

require('/path/to/MaxMind-DB-Reader-php/autoload.php');

然后正常实例化读取器类

use MaxMind\Db\Reader;
$reader = new Reader('example.mmdb');

安装(RPM)

RPM 可在官方 Fedora 存储库中找到。

在 Fedora 上安装,请运行

dnf install php-maxminddb

在 CentOS 或 RHEL 7 上安装,首先启用 EPEL 存储库,然后运行

yum install php-maxminddb

请注意,这些软件包不是由 MaxMind 维护的。

使用方法

示例

<?php
require_once 'vendor/autoload.php';

use MaxMind\Db\Reader;

$ipAddress = '24.24.24.24';
$databaseFile = 'GeoIP2-City.mmdb';

$reader = new Reader($databaseFile);

// get returns just the record for the IP address
print_r($reader->get($ipAddress));

// getWithPrefixLen returns an array containing the record and the
// associated prefix length for that record.
print_r($reader->getWithPrefixLen($ipAddress));

$reader->close();

可选 PHP C 扩展

MaxMind 提供了一个可选的 C 扩展,它可以作为 MaxMind\Db\Reader 的替代品。为了使用此扩展,你必须按照上述说明安装 Reader API,并按照以下说明安装扩展。如果你使用自动加载器,则不需要对代码进行任何更改。

安装扩展

首先按照其 README.md 文件中的说明安装 libmaxminddb。在成功安装 libmaxmindb 后,你可以从 pecl 安装扩展

pecl install maxminddb

或者,你也可以从源代码安装它。为此,请在此分布的最高级目录中运行以下命令

cd ext
phpize
./configure
make
make test
sudo make install

然后你必须加载你的扩展。推荐的方法是将以下内容添加到你的 php.ini 文件中

extension=maxminddb.so

注意:你可能需要在你的操作系统上安装 PHP 开发包,例如 Debian 系统上的 php5-dev 或 RedHat/Fedora 系统上的 php-devel。

128 位整数支持

MaxMind DB 格式包括 128 位无符号整数类型。尽管目前没有 MaxMind 分发的数据库使用此类型,但纯 PHP 读取器和 C 扩展都支持此类型。纯 PHP 读取器需要 gmp 或 bcmath 来读取包含 128 位无符号整数的数据库。

整数当前由C扩展以十六进制字符串(以“0x”为前缀)返回,由纯PHP读取器以十进制字符串(无前缀)返回。任何使读取器实现始终返回整数的十六进制或十进制表示的方法都将不被视为重大变更。

支持

请使用GitHub问题跟踪器报告此代码的所有问题。

如果您遇到的问题与客户端API无关,请参阅我们的支持页面

要求

此库需要PHP 7.2或更高版本。

使用纯PHP API读取某些数据库可能需要GMP或BCMath扩展。

贡献

鼓励提交补丁和拉取请求。所有代码应遵循PSR-1和PSR-2风格指南。尽可能包含单元测试。

版本控制

MaxMind DB Reader PHP API使用语义版本控制

版权和许可

本软件版权所有(c)2014-2023 MaxMind公司。

这是免费软件,根据Apache License,版本2.0许可。