【发布时间】:2012-04-25 23:01:33
【问题描述】:
我读到了UUID v4,它几乎是独一无二的,而这正是我所需要的。问题是,这个数字太大了,是否有可能生成像 Facebook 或 Twitter 这样的 UUID 的字符更少?
我阅读了一些帖子,您可以在其中使用 Ascii85 将此代码缩减到 20,但没有看到可靠的 PHP 脚本可以完成这项工作。有人知道测试类吗??对于随机 ID,这是存储这 20 个字符的最佳方式,对吗?
--- 编辑---
@大卫·施瓦茨
谢谢。我需要一个服务器中的随机唯一标识符,介于 8 到 16 个字符之间(如果它是最低的,那么 20 就可以了)。它的想法是识别具有可读 ID 但不是增量的对象(第一个对象 10001,第二个 10002),542A4B243J、C63426KJ70、O30V4U1I9P 等方式很好。 ID 必须是(至少)6 个 MySQL 表的主键。对象是使用 PHP 在同一服务器中创建的。
@ta.speot.is
我写道“没有看到可靠的 PHP 脚本来完成这项工作。有人知道经过测试的类吗??”我认为 google 中出现的所有代码都没有经过测试,您是否测试了所有链接??
@sarnold
谢谢,不好意思,没看懂=(
【问题讨论】:
-
您需要详细解释您的要求以获得有用的答案。例如,您是否需要能够从大量完全不协调的位置生成 ID 并让它们仍然是唯一的?或者您可以为每个 ID 分配者分配一个前缀,以便将问题减少到本地唯一 ID?他们可以保存状态并从中断的地方继续吗?还是必须纯粹是随机的?可以基于时间吗?以此类推。
-
别忘了将你的 UUID 从 36 字节的“常规样式”转换为
0-2^128 - 1范围内的整数——你不一定有 使用 128 位整数,但您必须至少以正确的 4 字节块处理输入,就好像它是 128 位长一样。