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