gpt4 book ai didi

php - ID生成算法类似于youtube的生成

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:57:46 25 4
gpt4 key购买 nike

我正在为投票生成随机 ID;出于显而易见的原因,我删除了枚举 ID。我已经为生成 ID 创建了自己的函数,但我不确定它是否非常“优化”或者我是否没有以正确的方式进行操作。一旦我达到接近 64^6 的民意调查(可能永远不会发生),它就会滞后。这样很好吗?

function generateID()
{
$chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_';
$id = $this->injectionCSC('$' . substr(str_shuffle($chars), 15, 10), true);

$link = $this->connect();
$query = mysqli_query($link, "SELECT * FROM polls WHERE id='$id'");
if (mysqli_num_rows($query) > 0) {
$id = $this->generateID();
}

return $this->injectionCSC($id, false);
}

$this->injectionCSC($id, false/true);只是一个摆脱sql注入(inject)和html标签的功能。如果我说得没错,这个当前 ID 生成函数最多可以容纳 1.8014399e+16 个投票。为了增加数量,我可以更改前面的特殊字符 ('$') 或只添加另一个字符。

最佳答案

不要使用伪随机数生成器来生成您的唯一 ID,而是选择 UUID。

与您的 str_shuffle 实现不同,UUID v4 是唯一的并且极不可能发生冲突。您可以使用 ramsey/uuid包来做到这一点。写起来很简单:

$uuid4 = (string) Uuid::uuid4(); // something like 16fd2706-8baf-433b-82eb-8c7fada847da

您可以使用 base64 对原始字节进行编码:

$id = base64_encode(Uuid::uuid4()->getBytes());

关于php - ID生成算法类似于youtube的生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36516731/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com