PHP生成唯一标识uuid

来源:赵克立博客 分类: PHP 标签:PHP数组发布时间:2019-10-17 16:33:42最后更新:2019-10-24 10:58:43浏览:527
版权声明:
本文为博主原创文章,转载请声明原文链接...谢谢。o_0。
更新时间:
2019-10-24 10:58:43
温馨提示:
学无止境,技术类文章有它的时效性,请留意文章更新时间,如发现内容有误请留言指出,防止别人"踩坑",我会及时更新文章

生成函数

方法一

function greate_uuid()
{
    if (version_compare(PHP_VERSION, '7.1', '>=')) {
        return md5(session_create_id());
    }
    return md5(uniqid(md5(microtime(true)), true));
}

方法二

/**
 * 生成UUID 单机使用
 * @access public
 * @return string
 */
function uuid()
{
    $charid = md5(uniqid(mt_rand(), true));
    $hyphen = chr(45); // "-"
    $uuid   = chr(123) // "{"
     . substr($charid, 0, 8) . $hyphen
    . substr($charid, 8, 4) . $hyphen
    . substr($charid, 12, 4) . $hyphen
    . substr($charid, 16, 4) . $hyphen
    . substr($charid, 20, 12)
    . chr(125); // "}"
    return $uuid;
}

测试方法

//生成指定数量的uuid
$uuids = [];
for ($i = 0; $i < 1000000; $i++) {
    $uuids[] = greate_uuid();
}
//统计数据中值出现的次数
$values = array_count_values($uuids);
//遍历出大于1次的uuid
$duplicates = [];
foreach ($values as $k => $v) {
    if ($v > 1) {
        $duplicates[$k] = $v;
    }
}
echo '<pre>';
print_r($duplicates);
echo '</pre>';

结果为没有重复的值,但是这是在一台机器上使用,如果在分页式中使用需要加每个机器的标识来实现唯一性


微信号:kelicom QQ群:215861553 紧急求助须知
Win32/PHP/JS/Android/Python