【发布时间】:2017-07-05 18:12:22
【问题描述】:
我有这个生成随机促销代码的脚本。
}
$length = 10;
$characters = '123456789ABCDEFGHJKMNPQRSTUVWXYZ';
$charactersLength = strlen($characters);
$event = $request->event;
$prefix = $request->prefix;
$quantity = $request->quantity;
$randomString = '';
for ($x = 0; $x <= $quantity; $x++) {
for ($i = 0; $i < $length; $i++) {
$randomString .= $characters[rand(0, $charactersLength - 1)];
}
$pin = "$prefix"."$randomString";
$exists = Pin::where('pin', $pin)->first();
if(!$exists){
$new['pin'] = $pin;
$new['event'] = $event;
$new['user'] = '';
Pin::create($new);
}
$randomString = '';
}
它可以工作,但需要优化,因为当 $quantity 超过几千美元时,它可能需要很长时间才能执行。
我怀疑时间占用是正在寻找引脚是否存在的位。我确信必须有一种更有效的方法来确保随机字符串是唯一的。
想法?谢谢!
****** 正如所指出的,这里已经解决了随机哈希生成问题 ******
也许是这个问题的第 2 部分...
客户已请求为随机代码选择一组字符 - '123456789ABCDEFGHJKMNPQRSTUVWXYZ'。有没有办法限制 md5 哈希输出的字符?
【问题讨论】:
-
感谢约翰指出这一点。我确实读过那个问题。我不认为这是一个骗局,因为我试图像示例一样批量生成与创建临时广告。但是,现在我正在重新考虑整个方法。
标签: php