美文网首页实战技术
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生成不重复随机字符的思路

    参考函数: uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID,高并发情况下会重复。microti...

  • Lottery

    解题思路 原理 其中 win_numbers 是随机生成的数字字符串。使用 PHP 弱类型松散比较,以"1"为例,...

  • python opencv 生成验证码

    基本思路是使用opencv来把随机生成的字符,和随机生成的线段,放到一个随机生成的图像中去。 虽然没有加复杂的形态...

  • 常见算法前端JS实现

    字符串操作 判断回文字符串 翻转字符串 思路1:反向遍历字符串 思路2:转化成array操作 生成指定长度的随机字...

  • Golang 生成随机数字、随机字符串

    生成随机数字 生成随机字符串

  • PHP生成随机数

    PHP生成随机数,相信大家在做项目的时候是最常见的吧。js生成随机数,PHP生成随机数。 应用场景:用户注册/登录...

  • Java生成6位随机字符,随机数字

    生成6位随机字符 生成6位随机数字

  • php生成随机字符串

    生成长度为2m的随机字符串,m必须为偶数

  • shell案例解析

    批量生成随机字符文件名称生成固定模式包含随机字符的文件名称,首先获得随机字符,拼接字符串,通过touch命令创建文...

  • php使用md5生成随机字符串

    有时候我们常需要生成一些固定长度的随机字符串,比如uuid,随机字符串等 生成36位uuid 生成随机32位字符串...

网友评论

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

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