【问题标题】:Generate unique ids [duplicate]生成唯一ID [重复]
【发布时间】:2018-02-14 00:46:21
【问题描述】:

我正在寻找一种最可靠的方法来为项目生成唯一 ID,在该项目中用户可以发布内容而不会出现重复内容。提交帖子后,我想生成一个唯一的 ID 以供参考。例如,当从共享链接加载时,可能看起来像

example.com/post/e8a42f290fd853daa666aeaefa607f42

除了我宁愿有更短的链接。

id 可能是用户的用户名和当前时间的组合。

虽然有类似的问题我还没有找到一个提供我认为最好的答案的问题,但大多数人建议使用 md5 然后将其修剪下来,除非这会提高生成相同字符串的机会。

编辑:

我没有使用自动增量,因为以后会变得更难扩展。

【问题讨论】:

  • 您为什么要这样做?为什么不直接使用 auto_incremented 方法;我假设您为此使用数据库?
  • 对于完全唯一的标识符,请尝试生成 GUID。见stackoverflow.com/a/26163679/823549
  • bin2hex(random_bytes($id_length/2)); donezo.
  • @FunkFortyNiner 序列生成器很容易上手,但很难有效扩展。大的、随机的 [ish] ID 开始有点困难,但可以很好地扩展。
  • @Daniel 我喜欢你的深谋远虑。您现在可能需要做更多的工作来定义您的扩展策略,并可能设计您的 ID 以匹配。 Pinterest put out an interesting article 关于他们的分片和 ID 生成,虽然不是我特别推荐的,但包含相当多的思考。

标签: php hash


【解决方案1】:

【讨论】:

  • 您是否阅读或知道有关它的警告?
  • 是的,但你想要的并不存在。您想要简短而独特,但又不想使用 MD5...
  • 我对你的问题投了反对票,因为不清楚“最好”的期望。
  • @bart 我已经用更多解释的词代替了“最佳”:)
  • 请解释一下为什么你不喜欢长 md5 哈希?请解释避免碰撞对任务的重要性?因为您似乎优先考虑短暂而不是碰撞,但随后又抱怨碰撞风险低......
猜你喜欢
  • 1970-01-01
  • 2015-01-21
  • 2018-07-27
  • 2012-02-22
  • 1970-01-01
  • 1970-01-01
  • 2016-04-13
  • 1970-01-01
相关资源
最近更新 更多