本方法只需要解决1秒内的并发碰撞就可以,因为固定头部采用的是unixtime时间,精确到秒,超过1秒,这个头部的时间肯定变化了。同时本方法也可以用户随机订单编号的生成。
循环创建1万个随机账号(毫秒级),0碰撞,10万个大约有0-3个碰撞。
// 自动生成随机用户名
// 测试,循环创建1万个随机账号,0碰撞,10万大约0-3个碰撞,足够应付未来数十亿级PV
private function genUserNumber()
{
$chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
$username = "";
for ( $i = 0; $i < 6; $i++ )
{
$random=mt_rand(0,strlen($chars)-1);
$username .= $chars[$random];
}
return strtoupper(base_convert(time() - 1420070400, 10, 36)).$username;
}