php - 存储单个 IP、IP 范围、IP block 和 IP 类别并快速搜索它们的最佳方式

标签 php mysql sql database ip

在 MySQL 数据库中存储多种 IP 类型的最佳方式是什么:
- 单一 IP (123.123.123.123)
- IP 范围 (123.123.123.1 - 123.123.123.121)
- IP block (123.123.123.1/20 )
- IP 类(123.123.123.* 或 123.123..)

我正在考虑将所有范围/ block /类转换为单个 IP,并使用 ip2long 存储它们以便更快地搜索到表中,但这将导致超过 100 万个数据库,我也需要不时减少/扩大类或更改/删除 IP block 。

每次有人访问我的网站时都会访问此数据库(因此需要快速)。 有什么想法吗?

最佳答案

本教程可以帮助:http://daipratt.co.uk/mysql-store-ip-address/

保存 IPv4 地址最有效的说法是使用 INT 字段(不是您可能期望的 VARCHAR)。您可以使用 PHP 的 ip2long 和 MySQL 的 INET_NTOA 函数或 PHP 的 longtoip 来转换它们。

来源:IP address storing in MySQL database using PHP

关于php - 存储单个 IP、IP 范围、IP block 和 IP 类别并快速搜索它们的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19529472/

相关文章:

php - 如何仅针对某个 Controller 操作禁用实体缓存到 Redis?

c++ - Oracle OCCI 'select count(*)' 结果获取

mysql - 从 MySQL 触发器中的第三个表获取信息

MySQL 关系和约束,我应该使用它们吗?

c++ - 我可以在出错后使用 ODBC 语句吗(是否有效)?

mysql - 使用mysql计算两个值的差异并根据结果进行排序

php - 如何执行外部程序,将数据发送到 STDIN 并捕获 STDOUT?

php - 在 PHP 中从数组创建 .tar 文件

php - 发出 POST 请求时,Laravel WebSocket 出现 Pusher 错误

java - 如何在Spring中编写一个查询,将记录插入到Mysql数据库的2个表中