所以我需要在数据库中存储IP地址,但是将它们存储为stings效率不高,对我的目的来说不是很方便。
所以...我怎样才能在php中将ip转换成整数,尽可能减少处理,因为它每天会完成数百万次。
当然,我怎么能从integet转换回ip?
我知道这可以用Google搜索并且有一些简单的解决方案 - 但我要求的是最快方式,而不仅仅是“做X而你得到Y”,因为它实际上非常简单。
答案 0 :(得分:22)
答案 1 :(得分:1)
使用ip2long
- 此功能如此之快,如果您每天拨打一百万次,这无关紧要。它是一个库函数,因此经过充分测试和可靠。
而且,考虑到您的工作时间,它绝对是整个宇宙中最快的解决方案。
答案 2 :(得分:1)
您可以使用INT
$ip = ip2long($ip);
保存在mysql中:
$sql = "INSERT INTO user(ip) VALUES('$ip')";
$dbQuery = mysql_query($sql,$dbLink
您可以稍后返回ip:
SELECT INET_NTOA(ip) FROM 'user' WHERE 1
INET_NTOA(表达式):
给定一个数字IPv4网络地址 在网络字节顺序中,返回 点的四边形表示 地址为二进制字符串。 如果是,则INET_NTOA()返回NULL 不明白它的论点。
的MySQL> SELECT INET_NTOA(167773449); - > '10 .0.5.9'