Joe*_*ano 3 ruby ip integer ruby-on-rails
我记录了用户的IP地址.由于IP地址包含句点,我将它们存储为字符串.但我想通过尝试将它们保存为整数来尝试节省我的服务器空间.
我考虑过这样做:
@user_ip = request.remote_ip.delete(".").to_i
Run Code Online (Sandbox Code Playgroud)
例如,将"127.0.0.1"转换为127001
.
但是我担心在这种方法下可以将两个不同的IP地址保存为相同的整数.
那可能吗?如果是这样,有没有更好的方法将IP地址保存为整数?
执行这些转换(使用C语言)的标准方法称为inet_aton
(ascii to number)和inet_ntoa
(number to ascii).Ruby等效方法包含在IPAddr
:
require 'ipaddr'
IPAddr.new("192.168.0.1").to_i
=> 3232235521
IPAddr.new(3232235521, Socket::AF_INET).to_s
=> "192.168.0.1"
Run Code Online (Sandbox Code Playgroud)
但是,正如其他人在这里指出的那样,查询数据库中的数字表示并不总是切实可行的.但是MySQL例如允许您inet_ntoa/aton
直接在查询中使用这些函数:http:
//dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html
如果您想要开始使用netmasks过滤和查询IP地址,这非常有用.有关如何设置以及如何以这种方式运行查询的更多示例,请参见此处:http:
//www.finnie.org/2007/12/05/mysql-and-cidr-selection/
归档时间: |
|
查看次数: |
1420 次 |
最近记录: |