如何改进这个随机促销代码生成器脚本?

时间:2017-02-16 14:49:06

标签: php

我有这个脚本可以生成随机促销代码。

    }
    $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 = '';
    }

它可以工作,但需要进行优化,因为当数量超过几千时,可能需要永久执行。

我怀疑时间值是看是否存在引脚的位。我确信必须有一种更有效的方法来确保随机字符串是唯一的。

思考?谢谢!

******正如所指出的,随机哈希生成已经在这里解决了******

也许是这个问题的第2部分......

客户已要求为随机代码选择一组字符 - &#39; 123456789ABCDEFGHJKMNPQRSTUVWXYZ&#39;。有没有办法用md5哈希来限制字符输出?

1 个答案:

答案 0 :(得分:0)

更简单的方法:

$randomString = sha1(rand(0, 2000));