uniqid-php生成uniqid的方案
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了uniqid-php生成uniqid的方案,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1790字,纯文字阅读大概需要3分钟。
内容图文
![uniqid-php生成uniqid的方案](/upload/InfoBanner/zyjiaocheng/235/4b18b0ec51fd45e5bbf15d07194bbc0a.jpg)
我现在想到的方案是用
$uniqid = md5(microtime());
但是我担心md5的碰撞和并发高了以后microtime的重复。
请问,有没有这样生成Uniq ID的方案什么的?
回复内容:
有一个需求,要给每一条数据生成一个ID,不可重复,由于业务要求,不能用MySQL的auto increment,只能用程序生成ID。
我现在想到的方案是用
$uniqid = md5(microtime());
但是我担心md5的碰撞和并发高了以后microtime的重复。
请问,有没有这样生成Uniq ID的方案什么的?
string uniqid ([ string $prefix = "" [, bool $more_entropy = false ]] )
有这个函数的说..
前段时间也思考了很多种方案,不过由于服务器有可能是多台的原因,最终都否定了跟时间有关系的方案。
最终还是选择了数据库表的auto Increment。。
最终的方案是:
做一个临时表 就一个字段 id primary key auto Increment.对这个表插入空数据 直接返回唯一ID
一 程序生UID (1)常用的函数组合法有 md5 hash uniqid microtime mt_rand chr hexdec
二 适合大型应用 系统每次自动生成N个唯一ID存到队列 从队列去取得
三 适合大型应用 加入一定的业务规则或者服务器hash规则 + 随机ID
四 自增长 单机单库
我一般用这个
md5(uniqid(rand(), true));
比如多台服务器,可以这样组成唯一串
server_id + 扩展_id + mt_rand(10000,9999) + microtime(true) + 候补串
这样每个串长度是固定的,如果对长度有要求或者新增加规则了,候补串就能发挥出作用来,小弟愚见,各位补充
- 数据库自增字段拿来hash。可提前证明没有冲突
- 外部服务提供uniq id。比如snowflake http://engineering.twitter.com/2010/0...
- 使用很多NoSQL的自增方案。比如mongodb的
snowflake是一个不错的方案。
可以考虑使用mysql的uuid函数,该算法保证了出现冲突的概率几乎可以忽略不计。而且很通用,有各种语言支持的库来生成。
microtime + Client信息 + Server信息
Client信息可以是客户端ip,user agent等
Server信息可以使server ip等
其实就是uniqid函数加上恰当的前缀,这样惟一性是没有问题的
uniqid(rand(xx,xx))
可好?
<?php>
wweqweqwe
内容总结
以上是互联网集市为您收集整理的uniqid-php生成uniqid的方案全部内容,希望文章能够帮你解决uniqid-php生成uniqid的方案所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。