【问题标题】:A shorter UUID, ASCII85 with PHP更短的 UUID,ASCII85 和 PHP
【发布时间】: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 位长一样。

标签: php uuid base85 ascii85


【解决方案1】:

我在从事的一个企业项目中遇到了同样的问题,我在 PHP 中找不到经过测试的合理且快速的解决方案。所以我决定写一个 PHP 扩展,可以用 base85/ascii85 编码/解码数据。

您可以在这里查看:https://github.com/miezuit/php-base85

使用一组自动化测试对其进行测试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多