allanr Posted December 18, 2007 Share Posted December 18, 2007 Hello everyone. I am loading a text file into a MySQL table on my local machine. I am using the code below. The process stops at approx 70,000 records and does not finish. But, there is no error - no "something went wrong" or error in the mysql log. If I run the file for 50,000 records then run the file again, the table will have the full 100,000 and finish properly both times. If I run the file once using the loop to run 2 rounds of 50,000 the table will only have 65,000 records. Is it possible there is a limit on the number of queries that can run in one session? How else can I run the full file of 360,000 records? Thank you for your help! <?php $files_root = "path"; $file = $files_root."sample.csv"; $sep = "\",\""; $fp = fopen($file,"r"); $chunklen = 0; $chunk[0] = fgets($fp,2048); $headers = explode($sep, $chunk[0]); $headers = str_replace("\"", "", $headers); $headers = str_replace("'", "", $headers); $numheaders = count($headers); echo $numheaders; echo "<br />"; // Check Valid FILE if ($headers[0] != "text") { return false; exit; } $chunklen=strlen($chunk[0]); echo $chunklen."<br />"; echo "Now data <br />"; $host = "localhost"; $user = "motta"; $pass = "xxxxxx"; $dbname = "mottst"; $i = 0; while ($i < 2) { $j = 0; while ($j < 50000) { $conn = mysql_connect($host,$user,$pass); // echo $conn; mysql_select_db($dbname,$conn); $chunk[0] = fgets($fp,2048); $fields = explode($sep, $chunk[0]); $fields = str_replace("\"", "", $fields); $fields = str_replace("'", "", $fields); $query_start = "ref_id,vin,vehicle_code,make,model,body_style,model_year,v_features,price,max_mileage,ext_color,long_description,is_certified,transmission,doors,engine_size,comp_postcode,dealer_username"; $query_val = "'{$fields[0]}','{$fields[1]}','{$fields[2]}','{$fields[3]}','{$fields[4]}','{$fields[5]}','{$fields[6]}','{$fields[7]}','{$fields[8]}','{$fields[9]}','{$fields[10]}','{$fields[11]}','{$fields[12]}','{$fields[13]}','{$fields[16]}','{$fields[18]}','{$fields[20]}','{$fields[23]}'"; $query = "insert into temp_tbl(" . $query_start . ") values (" . $query_val . ")"; if (mysql_query($query, $conn)) { } else { echo "something went wrong at ".$j; } $j++; } //end of inner while $j mysql_close($conn); $i++; } // end of outer while fclose($fp); ?> Quote Link to comment Share on other sites More sharing options...
PFMaBiSmAd Posted December 18, 2007 Share Posted December 18, 2007 Check your web server log for errors. You are probably exceeding the maximum script execution time setting. If so, either increase the setting or disable it. Quote Link to comment Share on other sites More sharing options...
allanr Posted December 18, 2007 Author Share Posted December 18, 2007 Thank you. I was able to put set_time_limit(0) into the outer loop to reset the clock for the script. It works now. Quote Link to comment Share on other sites More sharing options...
fenway Posted December 18, 2007 Share Posted December 18, 2007 Thank you. I was able to put set_time_limit(0) into the outer loop to reset the clock for the script. It works now. Sounds like it's "working" very slowly... this may indicate something programatically incorrect. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.