php – 如何生成唯一整数只有ID,如Facebook Twitter

搜索SO和其他网站后,我未能提出确凿证据表明Facebook,Twitter和Pinterest如何生成自己的ID.需要的原因是避免网址冲突.移动到完全不同的ID将阻止这种情况,因为不会有十亿个记录.

> Facebook.com/username/posts/362095193814294
> Pinterest.com/pin/62487513549577588
> Twitter.com/#!/username/status/17994686627061761

如果您以Pinterest为例,前几位数字与用户ID相关,最后6位数字表示可能是自动增量的保存ID.

要创建一个类似的ID,但不是唯一的,我可以使用:base_convert(user_id.save_id,16,10).这里的问题是它不是唯一的,例如:base_convert(15.211,16,10)vs. base_convert(152.11,16,10).这两个是一样的.只需合并两个独特的数字集合,仍然会产生重复的结果.将uniqid()投入到组合中将基本上修复重复的内容,但这似乎不是一个伟大的实践.

更新:Twitter似乎使用这个:https://github.com/twitter/snowflake

有关生成唯一ID的建议,如上面的例子?

假设你的ID都是数字的.通过字符A(因为它肯定不会出现在原始ID中)并将其从base-11转换为base-10进行基准转换.

对于您的例子,我们现在得到不同的结果:

echo base_convert("15A211", 11, 10); //247820
echo base_convert("152A11", 11, 10); //238140
http://stackoverflow.com/questions/9301835/how-to-generate-unique-integer-only-ids-like-facebook-twitter

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:php – 如何生成唯一整数只有ID,如Facebook Twitter