+
80
-

php高并发下的唯一id如何生成?

php
php高并发下的唯一id如何生成?

网友回复

+
0
-

两种方案

1、到前时间戳结合微秒及随机数值来生成唯一id;

2、使用php内置函数uniqid;

uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID。 uniqid(prefix,more_entropy)

prefix 可选。规定唯一 ID 的前缀。如果两个脚本恰好在相同的微秒生成 ID,该参数很有用。

more_entropy 可选。规定位于返回值末尾的更多的熵。这将让结果更具唯一性。当设置为 TRUE,返回字符串为 23 个字符。默认是 FALSE,返回字符串为 13 个字符。

<?php
function getUniqId($prefix = 'BFW') {
    return $prefix . (strtotime(date('YmdHis', time()))) . substr(microtime(), 2, 6) . sprintf('%03d', rand(0, 999999));
}


function getToken() {
    //strtoupper转换成全大写的
    $charid = strtoupper(md5(uniqid(mt_rand(), true)));
    return substr($charid, 0, 8) . substr($charid, 8, 4) . substr($charid, 12, 4) . substr($charid, 16, 4) . substr($charid, 20, 12);
}

我知道答案,我要回答