概述:
下面的函数会输出一个随机ID,我使用它来提供一个确认别名以识别记录。但是,由于我们只使用了五位数字长度,因此必须检查重复(尽管不太可能)。使用下面列出的允许字符,大约有3300万多种组合。最终,我们将达到大约五百万条记录,因此冲突成为问题。
问题:
检查重复别名是低效且资源消耗大的。500万条记录是一大堆需要搜索的数据,特别是当不同用户同时进行此搜索时。
我的问题:
有没有一种方式可以“自动增加”此函数允许的组合?这意味着我只需要搜索最后一个记录的别名并继续移动到下一个组合。
已知限制:
我意识到代码将与下面的函数有很大不同。我也意识到mysql具有数字ID的自动增量功能,但项目需要使用由“23456789ABCDEFGHJKLMNPQRSTUVWXYZ”这些允许字符组成的五位别名。在这个问题上我的手被绑住了。
我的当前函数:
public function random_id_gen($length)
{
$characters = '23456789ABCDEFGHJKLMNPQRSTUVWXYZ';
$max = strlen($characters) - 1;
$string = '';
for ($i = 0; $i < $length; $i++) {
$string .= $characters[mt_rand(0, $max)];
}
return $string;
}