Samvel Asked:2020-05-19 18:08:09 +0000 UTC2020-05-19 18:08:09 +0000 UTC 2020-05-19 18:08:09 +0000 UTC 唯一 ID 生成器 772 我们需要一个唯一的 ID 生成器代码。上网查了一下。找到了一个函数 uniqid(),但不能保证唯一性。在 SO 上找到这篇文章。但是由于我是初学者,我不知道如何更改它(因为它不能正常工作)。告诉我怎么改?在您看来,它会发布唯一的 ID? php 2 个回答 Voted Best Answer Dmitriy Simushev 2020-05-19T18:20:25Z2020-05-19T18:20:25Z 有一个专门用于生成唯一性很高的伪随机标识符的标准:UUID。尽管理论上该标准生成的标识符可以重复,但实际上您可以安全地将它们视为唯一。 PHP 有一个实现此标准的现成库:https ://github.com/ramsey/uuid 。以下是您可以如何使用它: $uuid = \Ramsey\Uuid\Uuid::uuid4(); echo $uuid; // 550e8400-e29b-41d4-a716-446655440000 andreymal 2020-07-15T17:22:37Z2020-07-15T17:22:37Z 作为 UUID 的替代方案,您可以使用ksuid,它与 UUIDv4 一样使用随机位,但另外包含时间戳,从而允许标识符按日期排序,同时避免 UUID 版本和变体的历史困难,以及绑定到硬件(MAC 地址等)。 PHP 实现之一:https ://github.com/tuupola/ksuid use Tuupola\Ksuid; $ksuid = new Ksuid; /* Base62 представление */ print $ksuid; /* 0o5Fs0EELR0fUjHjbCnEtdUwQe3 */ /* HEX представление */ print bin2hex($ksuid->bytes()); /* 05a95e21d7b6fe8cd7cff211704d8e7b9421210b */ /* Чтение отдельных частей ksuid */ print $ksuid->timestamp(); /* 94985761 */ print $ksuid->unixtime(); /* 1494985761 */ print bin2hex($ksuid->payload()); /* d7b6fe8cd7cff211704d8e7b9421210b */ /* Варианты парсинга существующих ksuid */ use Tuupola\KsuidFactory; $ksuid = KsuidFactory::fromString('0o5Fs0EELR0fUjHjbCnEtdUwQe3'); $ksuid = KsuidFactory::fromBytes(hex2bin('05a95e21d7b6fe8cd7cff211704d8e7b9421210b')); $ksuid = new Ksuid(94985761, hex2bin('d7b6fe8cd7cff211704d8e7b9421210b'));
有一个专门用于生成唯一性很高的伪随机标识符的标准:UUID。尽管理论上该标准生成的标识符可以重复,但实际上您可以安全地将它们视为唯一。
PHP 有一个实现此标准的现成库:https ://github.com/ramsey/uuid 。以下是您可以如何使用它:
作为 UUID 的替代方案,您可以使用ksuid,它与 UUIDv4 一样使用随机位,但另外包含时间戳,从而允许标识符按日期排序,同时避免 UUID 版本和变体的历史困难,以及绑定到硬件(MAC 地址等)。
PHP 实现之一:https ://github.com/tuupola/ksuid