素材牛VIP会员

PHP简单生成通用唯一识别码(UUID)

 所属分类:PHP实例-函数/算法,常用实例教程

 浏览:5267次  评论:19次  更新时间:2018-12-14
牛币素材VIP可免积分下载
PHP简单生成通用唯一识别码(UUID)
积分说明:注册即送10牛币,每日签到可获得5牛币,成为VIP会员可永久免牛币下载!   充值积分   充值会员   更多说明»
素材描述:项目用到的UUID,它是通用唯一识别码(Universally Unique Identifier)的缩写。目的是让分布式系统中的所有元素,都能有唯一的辨识信息,而不需要通过中央控制端来做辨识信息的指定。这样的话,每个人都可以创建不与其它人冲突的UUID,于是就不需考虑数据库创建时的名称重复问题。

详细介绍

UUID是由一组32位数的16进制数字所构成,是故UUID理论上的总数为16^32=2^128,约等于3.4 x 10^38。也就是说若每纳秒产生1兆个UUID,要花100亿年才会将所有UUID用完。UUID重复几率非常非常低,是故大可不必考虑重复冲突的问题。 像Java和Python都有专门库函数生成UUID,PHP也有第三方库可以用来生成UUID。 安装

我们使用composer来安装uuid库。 composer require ramsey/uuid 使用 首先require自动加载文件,然后直接调用UUID方法。

require 'vendor/autoload.php'; 
 
use Ramsey\Uuid\Uuid; 
use Ramsey\Uuid\Exception\UnsatisfiedDependencyException; 
 
try { 
 
    // Generate a version 1 (time-based) UUID object 
    $uuid1 = Uuid::uuid1(); 
    echo $uuid1->toString() . "\n"; // i.e. e4eaaaf2-d142-11e1-b3e4-080027620cdd 
 
    // Generate a version 3 (name-based and hashed with MD5) UUID object 
    $uuid3 = Uuid::uuid3(Uuid::NAMESPACE_DNS, 'helloweba.net'); 
    echo $uuid3->toString() . "\n"; // i.e. 11a38b9a-b3da-360f-9353-a5a725514269 
 
    // Generate a version 4 (random) UUID object 
    $uuid4 = Uuid::uuid4(); 
    echo $uuid4->toString() . "\n"; // i.e. 25769c6c-d34d-4bfe-ba98-e0ee856f3e7a 
 
    // Generate a version 5 (name-based and hashed with SHA1) UUID object 
    $uuid5 = Uuid::uuid5(Uuid::NAMESPACE_DNS, 'helloweba.net'); 
    echo $uuid5->toString() . "\n"; // i.e. c4a760a8-dbcf-5254-a0d9-6a4474bd1b62 
 
} catch (UnsatisfiedDependencyException $e) { 
 
    // Some dependency was not met. Either the method cannot be called on a 
    // 32-bit system, or it can, but it relies on Moontoast\Math to be present. 
    echo 'Caught exception: ' . $e->getMessage() . "\n"; 
 
}
UUID有4个版本的算法,根据需求可以采用不同的算法。UUID可以用在产品序列号、拼接路径、服务器上的图片/文件名称、甚至订单号等。

讨论这个素材(19)回答他人问题或分享使用心得会奖励牛币

ti***ec  
2019年02月12日

谢谢了 拿走了

回复
tc***ju  
2019年03月05日

谢谢

回复
tk***10  
2019年06月16日

不错不错 很实用

回复
am***et  
2019年06月29日

谢了

回复
零***落  
2019年07月01日

很强大,学习了!!!

回复
si***ne  
2019年07月16日

很好很好,学习了

回复
零***落  
2019年07月17日

很好很好,学习了

回复
零***落  
2019年07月19日

不错不错随便看!!!

回复
qq***40  
2019年08月10日

谢谢分享~~

回复
wx***52  
2019年09月17日

谢谢分享~~

回复
qq***38  
2019年09月19日

Caught exception: When calling Ramsey\Uuid\Converter\Time\DegradedTimeConverter::calculateTime on a 32-bit system, Moontoast\Math\BigNumber must be present.

素材牛:32位操作系统与库文件造成的
素材牛:1、可以用64位系统试试 2、重新安装一下库“composer require moontoast/math”
wx***26:生成的UUID1为什么和在我查看演示的这个【e5d4c700-dda0-11e9-8ec6-8317ae899c27】不一致呢? 8ec6-8317ae899c27后边这几位字符码却不变
回复
qq***38  
2019年09月19日

为什么会出来这个报错

回复
wx***26  
2019年09月23日

生成的UUID1为什么和在我查看演示的这个【e5d4c700-dda0-11e9-8ec6-8317ae899c27】不一致呢? 8ec6-8317ae899c27后边这几位字符码却不变

素材牛:演示中UUID1是不一致的,多点几下数值都不一样的,可以分析一下代码,看是否是随机值生成的
回复
wx***41  
2021年08月23日

这个功能有点儿像注册软件时的注册码,唯一值,这个很好。

回复
 文明上网,理性发言!   😉 阿里云幸运券,戳我领取
我的牛币余额:0
所需牛币:10 开始下载

牛币获取:签到、评论、充值    » 在线充值(10牛币=1元)