不知道能不能出现随机分布,利用id取模加上层级系数
要用到数论知识好好研究一下
PHP:这个是以前用的使用md5后截取前两位
function getModEncodeDir($id,$mod=10,$level=2)
{
$level = (int)$level;
$id = (int)$id;
$mod = (int)$mod;
if($level > 5)
{
$level = 5;
}
if($mod>99)
{
$mod = 99;
}
$dir_name = array();
for($i = 1; $i <= $level; $i++)
{
if($i==1)
{
$dir_name[$i] = $id%$mod;
}
else
{
$dir_name[$i] = $dir_name[$i-1]*$i%$mod;
}
}
$dir_path = '';
$dir_path = implode('/',$dir_name);
Return $dir_path;
}
这个应该是随机分布的,效率比上边的函数差一点
PHP:
function getEncodeDir($encode_key, $value, $level=2)
{
$level = (int)$level;
$encode_str = md5($encode_key."+".$value);
if($level > 6)
{
$level = 6;
}
$dir_name = array();
for($i = 0; $i < $level; $i++)
{
$dir_name[] = substr($encode_str, $i*2, 2);
}
$dir_path = '';
$dir_path = implode('/',$dir_name);
Return $dir_path;
}
