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); ?>
There is no limit on the amount of queries but there is a limit on the execution time of a script. Try putting set_time_limit(0) in each loop in your script or set the max_execution_time in php.ini to a higher value.
Thank you! I was thrilled when this worked. I put the set_time_limit(0) in the outer loop and the script finished. I sure appreciate your help!