欢迎各位兄弟 发布技术文章
这里的技术是共享的
uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID。
uniqid(prefix,more_entropy)
参数 | 描述 |
---|---|
prefix | 可选。为 ID 规定前缀。如果两个脚本恰好在相同的微秒生成 ID,该参数很有用。 |
more_entropy | 可选。规定位于返回值末尾的更多的熵。 |
在这里,"熵" 的含义与信息论中的熵相关,表示于生成的唯一标识符的随机性和复杂度。在 uniqid() 函数的上下文中,more_entropy 参数的作用是增强生成 ID 的唯一性,降低重复的概率。
生成唯一 ID:
uniqid() 函数生成的 ID 是基于当前微秒时间(timestamp)生成。因此,它在时间上是唯一的。即使是不同的脚本在几乎相同的时间运行,理论上也可以通过 prefix 参数来确保 ID 的唯一性。
more_entropy 参数:
如果设置 more_entropy 为 true,则函数将增加一个更多的随机额外数据,通常是通过在唯一 ID 的后面附加一些额外的熵来实现。这意味着在极少数情况下,即便两个脚本在完全相同的微秒内运行,生成的 ID 也不太可能相同,从而进一步提高唯一性。
php$id1 = uniqid(); // 生成唯一 ID $id2 = uniqid('prefix_'); // 带有前缀的唯一 ID $id3 = uniqid('', true); // 增强熵的唯一 ID $id4 = uniqid('prefix_', true); // 带有前缀和增强熵的唯一 ID echo $id1 . "\n"; echo $id2 . "\n"; echo $id3 . "\n"; echo $id4 . "\n";
在这个上下文中,熵就是处理 ID 的复杂性和随机性,more_entropy 通过增加随机数据来确保在极少的碰撞情况下,生成的 ID 依然是唯一的。