gpt4 book ai didi

php - 如何调用自身内部的函数?

转载 作者:可可西里 更新时间:2023-11-01 12:23:00 33 4
gpt4 key购买 nike

我有一个生成 4 个字符的键的函数,每次都必须是唯一的。为此,该函数首先生成一个 key ,然后检查数据库表以查看它是否正在被其他人使用。

如果它不在使用中,它会返回 key ,否则,它会再次调用自身,但这会导致该函数执行无限循环,这是一个禁忌。这是整个函数:

function key_generator($length = 4)
{
// I've subsequently left out the generating code,
// which is not necesarry in this case

$key = 'xxxx';

if ($this->user_model->valid_key($key) == true)
{
return $key;
}
else
{
$this->key_generator(4);
}
}

再次调用该函数的正确方法是什么?

顺便说一下,我使用的是 CodeIgniter,因此是 $this

最佳答案

我不会在重试场景中使用递归函数(因为你不重用函数的结果,使用递归毫无意义)...它增加了很多不必要的开销。做这样的事情:

do {
$key = ...; // Generate your key here...
} while (!$this->user_model->valid_key($key));

return $key;

如果您接近最大键数,这将导致很长的循环时间,因此您可能需要设置某种最大限制。

哦,如果这在多个线程上同时发生并且您正在检查数据库,则您应该实现表写锁定,这样同一个键就不会被插入两次。检查 key 是否可用的函数最好在同一事务中锁定检查,如果可用则写入以避免任何冲突。

关于php - 如何调用自身内部的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1612200/

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