Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

fwrite wird immer langsamer

1 view
Skip to first unread message

Fabian Knauf

unread,
Sep 26, 2007, 1:08:10 PM9/26/07
to
Hallo,

ich möchte Daten aus einer mysql-Tabelle in eine Textdatei wegschreiben.
Das funktioniert an sich ganz gut, aber wenn die Datenmenge zu gross
ist, wird fwrite() immer langsamer. die ersten 5000 Sätze werden noch in
knapp 2 Sekunden geschrieben, die nächsten brauchen schon fast 5, und
die nächsten schon über 10. Sind in der Abfrage aber mal 50000 und mehr
drin, wird das 1. unerträglich und 2. komme ich in ein Timeout-Problem.

Was ich mache ist (in Auszügen):
...
$exp = mysql_query($sql);
if ($f = fopen ($tempdat, 'w')) {
$zaehler = 0;
$text = "";
while ($r = mysql_fetch_row($exp)) {

$r[1] = function1($r[1]);
$r[2] = function1($r[2]);
$r[5] = function2($r[5]);
$r[6] = function2($r[6]);

$text .= implode(';', $r)."\r\n";

$zaehler++;
if ($zaehler > 2000) {
$zaehler = 0;
fwrite($f, $text, strlen($text) );
$text = "";
}
}
fclose ($f);

} else {
echo "Datei konnte nicht geöffnet werden";
}

Hatte zuerst ein fwrite() für jeden Datensatz, dann (script oben) nur
alle 2000 Datensätze. Dann auch schon probiert die Datei zwischendrin
mal zu schließen. Dann die Umwandlungsfunktionen functio1 und function2
rausgelassen.
Es bleibt immer beim selben Verhalten (die Änderungen wirken sich aus,
aber nicht großartig) - die Geschwindigkeit geht in den Keller.

Was kann ich da verbessern?

Danke
Fabian

Fabian Knauf

unread,
Sep 26, 2007, 3:54:10 PM9/26/07
to

> Was kann ich da verbessern?
Ich bin inzwischen weiter: Ursache war, dass ich zwischendrin als
User-Info eine Ausgabe-Funktion in Form eines Laufbalkens hatte. Wird
diese in zu kurzen Abständen aktualisiert steigt die CPU-Auslastung des
Browsers auf bis zu 50% und das macht das Script langsamer.

Leider kommt jetzt aber das nächste Problem: das Script hört einfach
mittendrin auf - aber dazu fange ich einen neuen Thread 'was stoppt das
script?' an

Danke
Fabian

0 new messages