php生成标准唯一的uuid的方法

方法一:php内置函数uniqid()

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

语法

uniqid(prefix,more_entropy)
参数 描述
prefix 可选。为 ID 规定前缀。如果两个脚本恰好在相同的微秒生成 ID,该参数很有用。
more_entropy 可选。规定位于返回值末尾的更多的熵。

说明

如果 prefix 参数为空,则返回的字符串有 13 个字符串长。如果 more_entropy 参数设置为 true,则是 23 个字符串长。

如果 more_entropy 参数设置为 true,则在返回值的末尾添加额外的熵(使用组合线形同余数生成程序),这样可以结果的唯一性更好。

返回值

以字符串的形式返回唯一标识符。

提示和注释

注释:由于基于系统时间,通过该函数生成的 ID 不是最佳的。如需生成绝对唯一的 ID,请使用 md5() 函数(请在字符串函数参考中查找)。

例子

<?php
echo uniqid();
?>

输出类似:

4415297e3af8c

方法二:php内置函数com_create_guid()

com_create_guid函数在生成全局唯一标识符,生成类似于:{E787D62D-4B4D-492C-9301-6FFD53A1F2D7}这样的字符串,可用trim函数或者其它方法处理掉大括号,即:trim(com_create_guid(), ‘{}‘);

<?php

function GUID()
{
    if (function_exists('com_create_guid') === true)
    {
        return trim(com_create_guid(), '{}');
    }

    return sprintf('%04X%04X-%04X-%04X-%04X-%04X%04X%04X', mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(16384, 20479), mt_rand(32768, 49151), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535));
}

?>

方法三:使用数据库函数

如php连接mysql时,可以用mysql_query("select  uuid() as uid");得出唯一id,也可得出类似于:82685c7c-f2a6-1032-b525-fe3407868e36这样的唯一字符串

方法:其它自定义字符串或函数组合

如使用微秒数或者时间戳加上随机数等组合生成唯一ID,类似于:md5(time() . mt_rand(1,1000000));

时间: 2024-10-13 16:00:06

php生成标准唯一的uuid的方法的相关文章

Python生成通用唯一识别码UUID

from uuid import uuid4 for i in range(100): uid = str(uuid4()) suid = ''.join(uid.split('-')) print(suid) 原文地址:https://www.cnblogs.com/jiyu-hlzy/p/12263617.html

Oracle中生成uuid的方法

Oracle中生成uuid的方法 下载LOFTER客户端 在Oracle SQL 提供了一个生成uuid的函数sys_guid: http://download.oracle.com/docs/cd/E11882_01/server.112/e17118/functions187.htm#i79194 http://en.wikipedia.org/wiki/Universally_unique_identifier SQL> select sys_guid() from dual ; SYS_

Django生成唯一字符串UUID与MD5

1 Python使用UUID库生成唯一ID UUID是128位的全局唯一标识符,通常由32字节的字符串表示,保证时间和空间的唯一性 通过MAC地址.时间戳.命名空间.随机数.伪随机数来保证生成ID的唯一性 用法: uuid1()--基于时间戳 uuid3()--基于名字的MD5散列值 通过计算名字和命名空间的MD5散列值得到,保证了同一命名空间中不同名字的唯一性, 和不同命名空间的唯一性,但同一命名空间的同一名字生成相同的uuid. uuid4()--基于随机数 由伪随机数得到,有一定的重复概率

PHP 生成UUID的方法

1 public function guid(){ 2     //检测是否存在函数 3     if (function_exists('com_create_guid')){ 4         //创建全局唯一UUID标识. 5         return com_create_guid(); 6     } else { 7         //随机数生成器. php4.2.0以上版本支持. 8         mt_srand((double)microtime() * 10000)

通过Zookeeper学习在分布式系统中生成全局唯一ID

Session是Zookeeper中的会话实体,代表了一个客户端会话.SessionID用来唯一标识一个会话,因此Zookeeper必须保证sessionID的全局唯一性,在每次客户端向服务端发起"会话创建"请求时,服务端都会为其分配一个sessionID.那么Zookeeper是如何实现的呢? 在SessionTracker初始化的时候,会调用initializeNextSession方法来生成一个初始化的sessionID,之后在Zookeeper的正常运行过程中,会在该sessi

高并发分布式系统中生成全局唯一Id汇总

高并发分布式系统中生成全局唯一Id汇总 (转自:http://www.cnblogs.com/baiwa/p/5318432.html) 数据在分片时,典型的是分库分表,就有一个全局ID生成的问题.单纯的生成全局ID并不是什么难题,但是生成的ID通常要满足分片的一些要求:   1 不能有单点故障.   2 以时间为序,或者ID里包含时间.这样一是可以少一个索引,二是冷热数据容易分离.   3 可以控制ShardingId.比如某一个用户的文章要放在同一个分片内,这样查询效率高,修改也容易.   

如何在高并发分布式系统中生成全局唯一Id

我了解的方案如下-------------------------- 1.  使用数据库自增Id 优势:编码简单,无需考虑记录唯一标识的问题. 缺陷: 1)         在大表做水平分表时,就不能使用自增Id,因为Insert的记录插入到哪个分表依分表规则判定决定,若是自增Id,各个分表中Id就会重复,在做查询.删除时就会有异常. 2)         在对表进行高并发单记录插入时需要加入事物机制,否则会出现Id重复的问题. 3)         在业务上操作父.子表(即关联表)插入时,需要

如何在高并发分布式系统中生成全局唯一Id(转)

http://www.cnblogs.com/heyuquan/p/global-guid-identity-maxId.html 又一个多月没冒泡了,其实最近学了些东西,但是没有安排时间整理成博文,后续再奉上.最近还写了一个发邮件的组件以及性能测试请看 <NET开发邮件发送功能的全面教程(含邮件组件源码)> ,还弄了个MSSQL参数化语法生成器,会在9月整理出来,有兴趣的园友可以关注下我的博客. 分享原由,最近公司用到,并且在找最合适的方案,希望大家多参与讨论和提出新方案.我和我的小伙伴们也

生成32位UUID及生成指定个数的UUID

参考地址:https://blog.csdn.net/xinghuo0007/article/details/72868799 UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的.通常平台会提供生成的API. 按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址.纳秒级时间.芯片ID码和许多可能的数字 使用UUID的好处在分布式的软件系统中(比如:DCE/RPC, COM+,CORBA)就能体现出来, 它能保证每个节点所生成的标识都不会重复,并且随着WEB服务