美文网首页实战技术
PHP生成不重复随机字符的思路

PHP生成不重复随机字符的思路

作者: elileo | 来源:发表于2021-08-08 13:39 被阅读0次

    参考函数:

    uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID,高并发情况下会重复。
    microtime() 返回当前 Unix 时间戳和微秒数,有重复概率。
    random_int()php7添加了更好的随机数random_int()用来代替php5的mt_rand()
    session_create_id()函数生成唯一标识符,经测试即使循环调用session_create_id()一亿次,都不会出现过重复字符。

    方法一 较短的随机字符(22个字符)

    uniqid()microtime(),几乎不可能重复。

            //我的破笔记本跑100万次都没有重复
            $strTF = '';
            for ($i=0;$i<1000000;$i++){
                $str = str_replace('0.','',explode(' ',microtime())[0]);
                $strnow = uniqid().$str;
                if ($strTF==$strnow) {
                    echo $strnow;
                }
                $strTF = $strnow;
                echo '<br>';
            }
    

    其中str_replace('0.','',explode(' ',microtime())[0]) 可得到8个字符的毫秒数字,如果用random_int(1000,9999)替代,可以再节约4个字符。

    方法二 较长的随机字符(27个字符)

    使用session_create_id()函数生成唯一标识符,经过实际测试发现,即使循环调用session_create_id()一亿次,都没有出现过重复。 php session_create_id()是php 7.1版本新增的函数,用来生成session id,低版本无法使用。

    相关文章

      网友评论

        本文标题:PHP生成不重复随机字符的思路

        本文链接:https://www.haomeiwen.com/subject/bwcovltx.html