【发布时间】: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 生成,虽然不是我特别推荐的,但包含相当多的思考。