I have 1 function in my debug model which i want to use in order to add dummy data to my app to test its speed and such…
the problem is that it needs to add records to 2 different tables and also check for duplicates usernames etc before each record is added to db so it takes a little time…
also this procedure is repeated about $total different dummy records i want to add at once in a for loop…
for example for 100 new users i want to add it takes around 5 seconds to proceed.
is this time fine or do i need to optimize it?
what if i want to add 1000,10000 users at once?? is it possible?
EDIT:
Function called to insert data:
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");
}
}
}
}
If you’re not worried about having a random string as the user name, just set the
$email = 'user'.$i.'@email.com';(so you don’t have to worry about collisions). The main reason this will be running slow is because you’re sending a new query to the database on each iteration of the loop – it would be much much faster to generate a bulk insert string like:This way you can avoid the overhead of tcp traffic from sending 10000 queries to the database and have it do it all in one go.