gpt4 book ai didi

php - 生成 500 万个唯一代码

转载 作者:行者123 更新时间:2023-12-05 08:40:19 26 4
gpt4 key购买 nike

我正在寻找一种有效的方法来生成 500 万个具有 7 个字符(字母、数字、特殊字符)的唯一代码。

基本上,我的想法是生成一个具有唯一约束的表。然后生成一个代码,将其插入数据库,看看它是否被“接受”(意味着一个新代码),直到我们有 500 万个唯一代码。

或者,他们的想法是生成一个包含 500 万个唯一代码的数组,然后立即将它们插入数据库,以查看有多少代码进入了数据库(是唯一的)。

第三种选择是创建一个代码,检查它是否已经存在,如果不存在则将其插入数据库。

我现在的问题是我应该使用什么方法——我监督的可能是一个问题。或者有更好的方法吗?

非常感谢!

最佳答案

选择一个合适的函数生成一个随机码;出于说明目的,我将使用这个:

function generateCode() {
return substr(bin2hex(random_bytes(4)), 0, 7);
}

参见 https://stackoverflow.com/a/22829048/476和那里的其他答案来选择适合你的东西。重要的一点是它使用了一个良好的随机源random_bytes , random_int , openssl_random_pseudo_bytes/dev/urandom。这最大限度地减少了两次调用此函数产生相同输出的可能性。

从那里,只需使用数组键来删除重复值:

$codes = [];

while (count($codes) < 5000000) {
$codes[generateCode()] = null;
}

$codes = array_keys($codes);

如果 generateCode 足够随机,则应该很少有冲突,并且以这种方式生成代码应该不会有太多开销。即使,这大概是一次性操作,效率也不是最重要的。 500 万个短字符串当然应该毫无问题地装入内存。然后,您可以将它们批量插入到数据库中。

关于php - 生成 500 万个唯一代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56271234/

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