哪个更快地管理变化的变量列表 - 数据库,数组或文本文件?

时间:2013-07-24 16:32:43

标签: php sql database arrays database-design

我在网站上有一项功能,用户可以注册一封电子邮件,然后接收一个唯一的6位数PIN码。

据我所知,如果我为PIN生成一个随机数,然后检查它是否对现有注册的PIN是唯一的(如果没有则循环回来),这将在以后的注册中产生相当大的服务器负载。

相反,我选择预定义可用的PIN列表,在注册时从该列表中选择一个PIN,将其与用户关联,然后将其从可用的PIN列表中删除。

处理此列表管理的最有效方法是什么?我应该在数据库中使用带有索引,数组还是文本文件的表?作为指南,我的列表中有500,000个唯一可用的PIN。

目前,我已将其分解为文本文件,然后我循环选择可用的PIN并将每个PIN依次发布到数据库。使用PIN时,会从文本文件中删除它。

这是最佳做法吗?是否有更快/更好的方法来处理大量请求?我试图以这种方式处理它会遇到什么问题?:

//getting pin list and file where the pin exists
$sel_file = "";
for($i=1;$i<=10;$i++) {
    $sel_file = "pinlist/".$i.".txt";
    $pin_list = file($sel_file);
    if(count($pin_list)!=0) {
        break;
    }
}

if(count($pin_list)==0) {
    echo "Sorry we are full";
    exit;
}

//selecting pin
$pin = $pin_list[0];

//deleting pin and saving file
unset($pin_list[0]);
file_put_contents($sel_file,implode("",$pin_list));

//insert data
mysqli_query($conn,"INSERT INTO users(user_pin,user_email) VALUES('{$pin}','{$_POST['srEmail']}')");

编辑:回答一些评论; PIN是另一个程序的唯一访问令牌。最重要的功能是能够处理对可用引脚列表的并发请求,因此我假设这不包括平坦的txt文件方法。我是否正确,数组可能仍然比标准数据库更好地实现这一目标?

0 个答案:

没有答案