ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

php – 快速将虚拟数据插入mysql

2019-06-21 02:04:24  阅读:180  来源: 互联网

标签:php mysql codeigniter records


我在我的调试模型中有1个功能,我想使用它来为我的应用程序添加虚拟数据以测试其速度等…

问题是它需要将记录添加到2个不同的表中,并在每个记录添加到db之前检查重复的用户名等,这样需要一点时间……

此过程重复约$$想要在for循环中一次添加的不同虚拟记录…

例如,对于我要添加的100个新用户,大约需要5秒钟才能继续.

这次还好还是我需要优化它?

如果我想一次添加1000,10000个用户怎么办?可能吗?

编辑:
调用函数插入数据:

public function registerRandomUsers($total = 1){
    $this->load->model("misc_model");
    $this->load->model("encryption_model");
    $this->load->model("signup_model");

    for ($i=1;$i<=$total;$i++){
        $username = $this->misc_model->generateRandomString(15);
        $flag = false;
        while ($flag == false){
            if ($this->user_model->usernameExist($username)){
                $username = $this->misc_model->generateRandomString(15);
            }else{
                $flag = true;

                $password = 'Test123';
                $email = $username.'@email.com';
                $data = array(
                    'username' => $username,
                    'password' => $password,
                    'email' => $email
                );
                $this->signup_model->submitRegistration($data);
                $userdata = $this->user_model->getUserData($username, "username");
            }
        }
    }
}

解决方法:

如果您不担心随机字符串作为用户名,只需设置$email =’user’.$i.’@email.com’; (所以你不必担心碰撞).这将导致运行缓慢的主要原因是因为您在循环的每次迭代中向数据库发送新查询 – 生成批量插入字符串会快得多:

INSERT INTO user (email,pass)
VALUES ('user1@email.com','Test123')
,      ('user2@email.com','Test123')
,      ('user3@email.com','Test123')
,      ('user4@email.com','Test123')
,      ('user5@email.com','Test123');

这样,您可以避免tcp流量从发送10000个查询到数据库的开销,并让它一次完成所有操作.

标签:php,mysql,codeigniter,records
来源: https://codeday.me/bug/20190621/1250195.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有