Forum Moderators: coopster
I wrote an update database code but since my csv file is too large for server handle, it exceeded maximum time limit. My question is, how am i going to count every 1000 lines in file then post to server and repeat same step again by using function in order not to exceed the default time. For example, my file has 20,000 records. I know there is some other methods like set time limit function, change time limit in php.ini....but i'm not going to do that as it will mess up the server. Any expert here can help me out? Thanks for looking this up for me :D
Here is my original code tat result Max Time Limit fatal error:
$handle = fopen("test.csv", "r");
fgetcsv($handle, 20000, ",");
while (($data = fgetcsv($handle, 20000, ",")) !== FALSE){
$user = str_replace(",", "", $data[0]);
$userid = str_replace(",", "", $data[1]);
$pwd = str_replace(",", "", $data[2]);
$email = str_replace(",", "", $data[3]);
$query ="UPDATE testdb SET user='".$user."',userid='".$userid."',pwd='".$pwd."',
email='".$email."' WHERE user='".$user."' LIMIT 1";
echo $query."<hr>";
mysql_query($query) or die(mysql_error());
}
fclose($handle);
<?php
set_time_limit(1200);
$send_count = 1000;
$send_delay = 1;
$handle = fopen("2006.csv", "r");
fgetcsv($handle, 20000, ",");
while (($data = fgetcsv($handle, 20000, ",")) !== FALSE){
if($send_count == 0)
{
$send_count = 10;
sleep($send_delay);
}
$send_count--;
$user = str_replace(",", "", $data[0]);
$userid = str_replace(",", "", $data[1]);
$pwd = str_replace(",", "", $data[2]);
$email = str_replace(",", "", $data[3]);
$query ="UPDATE testdb SET user ='".$user."',userid='".$userid."',pwd='".$pwd."' ,
email='".$email."' WHERE user='".$user."' LIMIT 1";
echo $query."<hr>";
mysql_query($query) or die(mysql_error());
}
fclose($handle);
?>