-
Is
fgets()het beste om hiervoor te gebruiken? Het is een prima manier om het te doen. Een andere optie is om het hele bestand in een array te lezen metfile(), loop dan over de array metforeach(). -
Moet ik een terugbelverzoek opnemen? Nee. Voer de query gewoon uit na het lezen van elke reeks regels uit het bestand.
-
Waar te beginnen? Wanneer de teller de batchgrootte bereikt, voert u de query uit. Zet vervolgens de teller terug op
0en stel de queryreeks terug naar de beginwaarde. Ten slotte moet u aan het einde van de lus de query uitvoeren met de resterende waarden (tenzij de bestandsgrootte een exact veelvoud was van de batchgrootte, in welk geval er niets overblijft).
$batch_size = 100;
$counter = 0;
//instead of executing query one by one,
//let us prepare 1 SQL query that will insert all values from the batch
$sql_prefix ="INSERT INTO workorderstest(id,parentid,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10) VALUES ";
$values = "";
while (($line = fgets($handle)) !== false) {
$values .= "($line),";
$counter++;
if ($counter == $batch_size) {
$values = substr($values, 0, strlen($values) - 1);
$conn->query($sql_prefix . $values) or die($conn->error);
$counter = 0;
$values ="";
}
}
if ($counter > 0) { // Execute the last batch
$values = substr($values, 0, strlen($values) - 1);
$conn->query($sql_prefix . $values) or die($conn->error);
}