使用 ip2long() 和 long2ip() 函数将 IP 地址由字符串转换为整数存储到数据库。
这样可以减少约四分之一(15字节的字符对比4字节的整数)的存储空间, 更易于计算该 IP 地址的有效范围, 而且还加速了搜索和排序的效率。
使用bigint(20)字段类型存储数据
ip2long ( string $ip_address ) : int
long2ip ( int $proper_address ) : string
存储一个大字符串到数据库之前, 使用 gzcompress() 或 gzuncompress() 进行压缩/解压。
此内建函数使用 gzip 算法, 其明文压缩率可以达到 90%。几乎每次我用 PHP 读写一个 BLOB 字段的时候都会用到它们(除需要全文索引时)。
/**
* 判断字符串是否base64编码
*/
function func_is_base64($str)
{
return $str == base64_encode(base64_decode($str)) ? true : false;
}
/**
* 压缩内容
*/
function func_gzcompress($str, $level = 9)
{
if (!func_is_base64($str)) {
return base64_encode(gzcompress($str, $level));
}
return $str;
}
/**
* 解压内容
*/
function func_gzuncompress($str)
{
if (func_is_base64($str)) {
return gzuncompress(base64_decode($str));
}
return $str;
}