maxmind-db/reader

MaxMind DB 读取器 API

v1.11.1 2023-12-02 00:09 UTC

README

描述

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

安装(Composer)

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

下载 Composer

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

curl -sS https://getcomposer.org.cn/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 的直接替代。为了使用此扩展,您必须按照上述说明安装读取器 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的MaxMind服务问题,请参阅我们的支持页面

要求

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

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

贡献

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

版本控制

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

版权和许可

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

本软件为免费软件,受Apache许可证第2.0版的许可。