使用uniqid生成唯一id
2015-07-13 22:05
211 查看
手册上说:
$prefix 前缀(默认为空),返回字符串长度13。
$more_entropy 字符串结尾增加额外的熵,返回字符串长度23。(ID更具唯一性)
其实就是一堆时间的十六进制。前八位是秒的十六进制,后5位是微妙的十六进制。
打开php源码包,在ext/standard/uniqid.c中会发现有这么一段:
好了,现在我们知道怎么回事了,前缀+hex(second)+hex(microsecond)+熵。
uniqid— 生成一个唯一ID(此函数是基于当前系统时间:精确到微秒)
用法
uniqid($prefix = '', $more_entropy = false);
$prefix 前缀(默认为空),返回字符串长度13。
$more_entropy 字符串结尾增加额外的熵,返回字符串长度23。(ID更具唯一性)
echo uniqid(); //55a3c0380d5c4(基于系统时间)
其实就是一堆时间的十六进制。前八位是秒的十六进制,后5位是微妙的十六进制。
打开php源码包,在ext/standard/uniqid.c中会发现有这么一段:
if (more_entropy) { spprintf(&uniqid, 0, "%s%08x%05x%.8F", prefix, sec, usec, php_combined_lcg(TSRMLS_C) * 10); } else { spprintf(&uniqid, 0, "%s%08x%05x", prefix, sec, usec); }
好了,现在我们知道怎么回事了,前缀+hex(second)+hex(microsecond)+熵。
使用
因为基于微秒,高并发还是有重复的可能性,通过前缀和熵及md5来使其更具唯一性。function getUniqid() { return md5(uniqid(mt_rand(), true)); }
相关文章推荐
- PHP生成唯一标示符uniqid
- php上传图片重命名6种方案研究与总结
- php上传图片重命名6种方案研究与总结
- php uniqid to python
- 使用PHP uniqid函数生成唯一ID
- Swift值字典使用
- HDU 1853 Cyclic Tour(最小费用流)
- 努力成为这样的人
- 装饰模式
- [UI] 精美UI界面欣赏[12]
- [SD心灵鸡汤]002.每月一则 - 2015.06
- 黑马程序员——高新技术---Java基础-常用类-正则表达式,Math类,Random类,System类,Date类
- MJRefresh刷新VS页面崩
- Python Security 入门
- 层次化(Hierachy)视景体裁剪
- vs项目启动调试时,显示找不到文件问题
- scrapy爬虫基本应用
- Leetcode_223_Rectangle Area
- 基于SPI的LSP网络封包截获
- Lettcode_223_Rectangle Area