Mailinglisten-Archive | 
Am Monday 17 July 2006 11:29 schrieb Sascha Grossenbacher:
> Hallo
>
> Das Problem der Geschwindigkeit ist vermutlich der Speicherverbrauch.
> Ich würde versuchen, das ganze mehr aufzuteilen.
>
> Wie bisher die Datei mit fopen öffnen und dann Zeile für Zeile mit fgets
> und gleich verarbeiten: also ein explode auf ',', prüfen ob der
> Datensatz schon in der Datenbank vorhanden ist und wenn nicht, speichern.
> Um noch weiter Geschwindigkeit zu gewinnen, könnte man noch die Query's
> zusammenfassen und zum Beispiel 1000 Datensätze gleichzeitig eintragen
> mit INSERT INTO table(feld1, feld2, ...) VALUES (wert1, wert2, ...),
> (wert1, wert2, ..) ...
>
> Der Vorteil dieser Lösung ist, das PHP niemals mit einem
> mehrdimensionalen Array mit 50'000 Elementen arbeiten muss, sondern
> immer nur mit einer Zeile.
>
> Gruss Sascha
Hi,
so sieht es zur Zeit aus:
		while (!feof($dz)) {
    			$buffer = fgets($dz, 4048);
			$zeile = explode('\n',$buffer);
			foreach ($zeile as $key => $value) {
				$dfeld = explode(',',$value);
# SQL Abfrage auf doppelte Datensaetze
# wenn nicht doppelt dann speichern
                         }
                 }
Es ist ab dem ersten Datensatz langsam und es ist schon langsam auch wenn ich 
nicht speichere.
Ein so großes Array sollte sich doch dabei gar nicht aufbauen.
    php::bar PHP Wiki - Listenarchive