noumenia / mmdbdaemon
mmDbDaemon 是一个内存驻留的 MaxMind 数据库读取器的 PHP 实现。
1.8
2023-11-29 14:24 UTC
Requires
- php: >=7.2
- ext-iconv: *
- ext-posix: *
- ext-sockets: *
- maxmind-db/reader: *
README
____ _ ____
_ __ ___ _ __ ___ | _ \| |__ | _ \ __ _ ___ _ __ ___ ___ _ __
| '_ ` _ \| '_ ` _ \| | | | '_ \| | | |/ _` |/ _ \ '_ ` _ \ / _ \| '_ \
| | | | | | | | | | | |_| | |_) | |_| | (_| | __/ | | | | | (_) | | | |
|_| |_| |_|_| |_| |_|____/|_.__/|____/ \__,_|\___|_| |_| |_|\___/|_| |_|
mmDbDaemon 是一个内存驻留的 MaxMind 数据库读取器的 PHP 实现。
mmDbDaemon 通过在持久内存驻留对象上运行查询,而不是重复加载 MaxMind 数据库进行多次查询,提供了一个简单的方式来并行执行查询并重用相同的数据库。
特性
- JSON 响应
- 监听 IP 地址/端口或 UNIX 套接字
- 支持信号
要求
- MaxMind-DB-Reader-php
- PHP 7.2, 7.3, 7.4, 8.0, 8.1, 8.2, 8.3
- iconv 模块
- posix 模块
- sockets 模块
使用 RPM 包安装
您可以通过 copr 存储库安装 mmDbDaemon,对于 Alma/Rocky/Oracle Enterprise Linux 和 Fedora,只需使用
dnf copr enable mksanthi/noumenia
dnf install mmDbDaemon
使用 Composer 安装
您可以使用 composer 安装 mmDbDaemon,要获取最新版本,请使用 create-project 命令,最后的点很重要,因为它告诉 composer 将文件保存在当前目录中。
composer create-project noumenia/mmdbdaemon .
如何使用
一旦守护进程运行,连接到套接字或 IP/端口,并发送以 NULL 结尾的 IP 地址。守护进程将以 JSON 格式的数据库结果进行响应。
Usage: mmdbdaemon [OPTION]...
-V, --version display version information only
-h, --help display help about parameters
-v, --verbose enable verbose output to stdout
-u, --user Effective user
-g, --group Effective group
-p, --pid PID file
-l, --processlimit Process limit
-c, --connection Connection string
-a, --autoload MaxMind DB Reader PHP autoload.php file
-m, --mmdb MMDB file (eg: GeoLite2-City.mmdb)
The connection string can be a UNIX socket or an IPv4/IPv6 address/port.
UNIX Socket : unix:/run/mmDbDaemon/mmDbDaemon.sock
Address/port : inet:9999@127.0.0.1
示例客户端
<?php
// Connect to a socket and open a stream
$fp = @stream_socket_client("unix:///run/mmDbDaemon/mmDbDaemon.sock", $errno, $errstr);
// or to connect via TCP
// $fp = stream_socket_client("tcp://127.0.0.1:9999", $errno, $errstr);
// IP address terminated by a NULL character
fwrite($fp, "46.101.128.168\0");
// Loop
while(!feof($fp)) {
// Read from the stream
echo fgets($fp, 1024);
}
// Close the stream
fclose($fp);