前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在 WordPress 中使用 UUID

在 WordPress 中使用 UUID

作者头像
Denis
发布2023-04-24 11:48:04
3730
发布2023-04-24 11:48:04
举报
文章被收录于专栏:WordPress果酱WordPress果酱

今天简单介绍一下 UUID 和在 WordPress 中的使用:

什么是 UUID

UUID,是Universally Unique Identifier的缩写,UUID出现的目的,是为了让分布式系统可以不借助中心节点,就可以生成UUID来标识一些唯一的信息;

UUID来自于IETF发布的一个规范:A Universally Unique IDentifier (UUID) URN Namespace

1个UUID是1个16字节(128位)的数字,为了方便阅读,通常将UUID表示成如下的格式:

代码语言:javascript
复制
xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx

使用连字符将其分为五段,形成8-4-4-4-12这样的32个字符,其中的字母是16进制数字,大小写无关,一个具体的UUID:

代码语言:javascript
复制
123e4567-e89b-12d3-a456-426655440000

特别注意下,N那个位置,只会是8,9,a,b。M那个位置,代表版本号,由于UUID的标准实现有5个版本,所以只会是1,2,3,4,5

UUID的不同版本

UUID本身也经过了多个版本的演化,每个版本的算法都不同。

版本1:基于时间

通过当前时间戳和机器MAC地址生成,由于在算法中使用了MAC地址,这个版本的UUID可以保证在全球范围的唯一性。但与此同时,因为它暴露了电脑的MAC地址(最后的12个字符)和生成的时间,这就是这个版本被诟病的地方。

版本2:DCE安全

DCE安全的UUID和基于时间的UUID算法相同,但会把时间戳的前4位置换为POSIX的UID或GID。不过,在UUID的规范里面没有明确地指定,所以基本上所有的UUID实现都不会实现这个版本。

版本3:基于命名空间(MD5)

由用户指定1个命名空间和1个具体的字符串,通过MD5散列来生成,这个版本也很少用到。

版本4:基于随机数

根据随机数,或者伪随机数生成UUID,这种UUID产生重复的概率是可以计算出来的,这个版本应该是用得最多的版本了;

版本5:基于命名空间(SHA1)

和版本3一样,不过散列函数换成了SHA1

在 WordPress 中使用

WordPress 在 4.9 版本的时候引入了一个判断 UUID 的函数 wp_is_uuid,他有两个参数,uuid 和 version,他可以判断 uuid 是不是一个有效的 UUID, version 可以指定版本,目前只支持版本 4。

代码语言:javascript
复制
wp_is_uuid('123e4567-e89b-12d3-a456-426655440000'); // 返回 true
wp_is_uuid('123e4567-e89b-12d3-a456-426655440000', 4); // 返回 false

因为 WordPress 中没有创建 UUID 的函数,所以我在 WPJAM Basic 中实现了创建 UUID 的函数:

代码语言:javascript
复制
function wpjam_create_uuid(){
	$chars	= md5(uniqid(mt_rand(), true));
	
	return substr($chars, 0, 8).'-'
	.substr($chars, 8, 4).'-'
	.substr($chars, 12, 4).'-'
	.substr($chars, 16, 4).'-'
	.substr($chars, 20, 12);
}

下面是使用该函数创建的 10 个 uuid:

代码语言:javascript
复制
cfd6f02f-fc15-42eb-52e4-1c7476c5ca7e
1140a68c-66de-6eff-e575-efac7235edc1
0886c1bd-34d4-19ea-aae4-8e871a6d39ad
8aff65a2-bfdd-b762-aec4-698eef3ab095
00cb4d8c-bb48-53e5-561e-e26d006a60e6
0d9cdc41-78af-3231-948a-cf29d8338ae2
74a4eea8-d683-ba7e-023b-73cae2f10bb9
1d40473b-ac15-e9a2-bc7f-a43fd3de3fd8
5129750a-0b23-7789-9a4f-c4704f90bb03
39edd5ee-9a5d-6729-df42-b3c522ae96e1
本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是 UUID
  • UUID的不同版本
  • 在 WordPress 中使用
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com