哈希分表方法

/*
* 根据账号名获取分表 
* 函数接受两个参数,$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,因为在最后一行代码中,对 h 1 取模 h1取模 h1取模n的操作会得到0到$n−1的余数。

$accountname = "xx";
$table = "account_info_".calc_hash_tbl($accountname);
...

你可能感兴趣的:(代码片段,哈希算法,算法)