什么是在PHP中将ip转换为整数的正确方法?

时间:2011-06-27 20:01:54

标签: php ip

所以我需要在数据库中存储IP地址,但是将它们存储为stings效率不高,对我的目的来说不是很方便。

所以...我怎样才能在php中将ip转换成整数,尽可能减少处理,因为它每天会完成数百万次。

当然,我怎么能从integet转换回ip?

我知道这可以用Google搜索并且有一些简单的解决方案 - 但我要求的是最快方式,而不仅仅是“做X而你得到Y”,因为它实际上非常简单。

3 个答案:

答案 0 :(得分:22)

使用ip2long()long2ip()。它们是PHP中最快的,因为它们只是建立在相应的C函数之上。

答案 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'