Hallo,
ich habe hier ein Skript, dass mir zunächste eine CSV Datei einliest mit ca. 135000 Zeilen und ca. 23 Spalten. Aufgrund dessen mußte ich schon das Memory_limit auf 512 MB setzen.
Von dieser CSV Datei benötige ich eigentlich nur 2 Spalten, nämlich die Bestellnummer(langtext2) und den Lagerbestand.
Anhand einer MYSQL Tabelle wir nun verglichen wo die Bestellnummer mit der Nummer in der CSV Datei übereinstimmt und der passende Bestandswert in die MYSQL Tabelle übernommen.
Die MYSQL Tabelle enthält ca 3000 Zeilen. Selbst bei einer max_execution_time von 2000 wird das Skript nicht fertig.
Wo kann ich optimieren um das Ausführen zu beschleunigen?
Die Ausführung des Einlesens der CSV Datei dauert nur 13 Sekunden. Würde es etwas bringen, die nicht benötigten Spalten zu löschen oder macht das keinen Unterschied?
Christian
ich habe hier ein Skript, dass mir zunächste eine CSV Datei einliest mit ca. 135000 Zeilen und ca. 23 Spalten. Aufgrund dessen mußte ich schon das Memory_limit auf 512 MB setzen.
Von dieser CSV Datei benötige ich eigentlich nur 2 Spalten, nämlich die Bestellnummer(langtext2) und den Lagerbestand.
Anhand einer MYSQL Tabelle wir nun verglichen wo die Bestellnummer mit der Nummer in der CSV Datei übereinstimmt und der passende Bestandswert in die MYSQL Tabelle übernommen.
Die MYSQL Tabelle enthält ca 3000 Zeilen. Selbst bei einer max_execution_time von 2000 wird das Skript nicht fertig.
Wo kann ich optimieren um das Ausführen zu beschleunigen?
Die Ausführung des Einlesens der CSV Datei dauert nur 13 Sekunden. Würde es etwas bringen, die nicht benötigten Spalten zu löschen oder macht das keinen Unterschied?
Christian
PHP-Code:
<?php
$beginn = microtime(true);
@ini_set("memory_limit",'512M');
@ini_set("max_execution_time",'2000');
error_reporting(0);
$dateizeiger = fopen("Artikelliste.txt", "r+");
$zeilenzahl=0;
$verbindung = mysql_connect("localhost","root","") or die ("keine Verbindung möglich. Benutzername oder Passwort sind falsch");
mysql_select_db("Artikel") or die ("Die Datenbank existiert nicht.");
function searchforid($id, $myarray) {
for ($row = 0; $row<135000; $row++) {
if ($myarray[$row][2]=== $id) return $row;
}
//return "nix gefunden";
}
while(($daten = fgetcsv($dateizeiger, 500, "\t")) !== FALSE)
{
$spaltenzahl = count($daten);
for($i=0;$i<$spaltenzahl;$i++)
{
$array[$zeilenzahl][$i]=$daten[$i];
}
$zeilenzahl++;
}
$dauer = microtime(true) - $beginn;
echo "Verarbeitung des Skripts: $dauer Sek.";
$beginn1 = microtime(true);
$abfrage = "SELECT langtext2 FROM hilfs";
$ergebnis = mysql_query($abfrage);
$hilfe1 = 0;
while($zeile = mysql_fetch_object($ergebnis))
{
$suchstring=$zeile->langtext2;
$hilfsvar=$array[searchforid($suchstring,$array)][6];
$query2='UPDATE hilfs set bestand = "'.$hilfsvar.'" where langtext2 = "'.$suchstring.'" ';
mysql_query($query2);
$hilfe2=mysql_affected_rows();
if ($hilfe2 <> "-1") {
$hilfe1=$hilfe1+1;}
printf(mysql_error());
}
printf("Geändert Datensätze: %d\n", $hilfe1);
fclose($dateizeiger);
echo("<br>");
$dauer = microtime(true) - $beginn1;
echo "Verarbeitung des Skripts: $dauer Sek.";
?>
Kommentar