【问题标题】:Generating short unique reference id with PHP uniqid function使用 PHP uniqid 函数生成简短的唯一参考 ID
【发布时间】:2015-12-22 06:31:06
【问题描述】:

我的目标是创建一个唯一的 ID 将其附加到记录并将其存储在数据库中。 id 应该是字母数字和短的。我不想使用自动递增方式生成 ID,因为此 ID 将附加到 url 的末尾,所以我不希望它是可猜测的。经过一些研究,我决定使用 uniqid(),因为我知道它是基于时间生成的。

我担心它在整个系统中是否是独一无二的,是否有机会 如果我要使用多台服务器和集群扩展我的系统,ID 会重复吗??

我不想在将值插入数据库之前进行重复检查,因为随着记录的增加,随着时间的推移,这会影响性能。

我正在使用 Larvel 框架。任何人都可以提出任何其他解决方案来解决这个问题。我是 laravel 的新手。

提前致谢

【问题讨论】:

  • 你有没有考虑用mysql内置的uuid()函数来代替?
  • @Shadow mysql uuid() 函数给出了大约 36 个字符长的结果,而 UUID_SHORT() 函数几乎是 17 个字符。我想要一些小东西
  • 您有相互冲突的要求。你想要一些简短但全球独一无二的东西。
  • 您可以在服务器名称/符号前面加上前缀,因此服务器 a 中的所有 uniqeid 都将以等开头。

标签: php mysql laravel-5 uniqueidentifier


【解决方案1】:

感谢所有建议。我决定使用前缀为 user_id 的 uniqid()。由于 uniqid() 是系统时间相关的,并且当 2 个同时请求到达服务器时可能会导致冲突,因此 user_id 前缀将确保即使同时出现请求,它也会生成不同的 id,因为与每个请求关联的 user_id 将是不同的。

【讨论】:

    猜你喜欢
    • 2010-12-11
    • 1970-01-01
    • 2015-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-16
    • 2012-07-18
    • 2011-06-26
    相关资源
    最近更新 更多