/*
* 根据账号名获取分表
* 函数接受两个参数,$u代表账号名,$n代表分表的数量,默认为256(即账号表分256张表)
*/
function calc_hash_tbl($u, $n = 256)
{
$h = sprintf('%u', crc32($u));//使用crc32函数计算账号名的哈希值,并使用sprintf函数将其转换为无符号整数
$h1 = intval($h / $n);//将哈希值除以分表数量$n得到$h1
return $h1 % $n;//将$h1对$n取模得到最终的分表索引值
}
这个函数默认输出的值范围是从0到255,因为在最后一行代码中,对$h1取模$n的操作会得到0到$n−1的余数。
$accountname = "xx";
$table = "account_info_".calc_hash_tbl($accountname);
...
评论 (0)