嗨,我想生成数千个独特的、不可预测的序列号,因此我编写了这个函数
function generate_serials($count){
$serials = array();
$token = '8uhf7+-=??/\/';
for($i = 1; $i <= $count; $i++){
$hash = sha1(md5( $token . ( time() + (432 * 1000) ) ));
$serial = '';
for($j = 0; $j < 12; $j++){
if($j == 4 || $j == 8) $serial .= '-';
$serial .= $hash[rand(0, 39)];
if(in_array($serial, $serials)){
$serial = '';
$j = 0;
}
}
$serials[] = $serial;
}
return $serials;
}
我有几个关于这种方法的问题。
我不知道为什么,但我不相信这个方法。(因为我总觉得我的解决方案和我自己都很蠢) 这个方法有什么问题吗?
另一个问题是性能,它需要大约20-30秒,这是正常的吗,还是我弄错了?
更新
哦,对不起大家 性能问题是因为内部循环计数器的名称与外部循环相同..是我的错误! :D