phpbar.de logo

Mailinglisten-Archive

[php] Textdatei einlesen!

[php] Textdatei einlesen!

Enrico Weigelt php_(at)_phpcenter.de
Wed, 4 Sep 2002 23:31:48 +0200


On Wed, Sep 04, 2002 at 12:06:31PM +0200, Daniel Bladeck wrote:

<snip>

> ich habe ein kleines Problem, ich habe ein kleines Prog das mir eine 
> Textdatei in ein Array List und dann die einzelnen Zeilen in eine Datenbank 
> schreibt. Jetzt wollte mein Freund damit 27000 Zeilen in DB schreiben und 
> verursachte dadurch einen Speicherüberlauf.
das ist klar. kannste dir ja ausrechnen 27000*(zeilenlaenge+x)
denke mal 10MB sollte das schon locker einnehmen ...

<snip>

> Das dauert aber fast 6mal so lange, geht das schneller?
rein formal:

zeitkomplexitaet: O(n+n*n/2)

t=a*n + b*(n*n/2)

wobei: a= zeit pro funktionsaufruf, fopen(), fclose(), etc
       b= zeit pro fgets() u. feof(), etc.

kurz: es wird in deinem falle dann 
      * 27000 mal die routine aufgerufen, das file geoeffnen und geschlossen.
      * 364500000 mal eine zeile gelesen.

warum denn nicht so ?

if ($fd = fopen($dateiname),"r")
{
  while (!feof($fd))
  { 
    packe_zeile_in_db ( fgets($fd,LINEMAX) );
  }
}

dann hast du nur noch lineare komplexitaet. 
besser gehts eigentlich nicht.

<snip>

~-n
--
 Enrico Weigelt    ==   metux ITS 
 Webhosting ab 5 EUR/Monat.          UUCP, rawIP und vieles mehr.

 phone:     +49 36207 519931         www:       http://www.metux.de/     
 fax:       +49 36207 519932         email:     contact_(at)_metux.de
 cellphone: +49 174 7066481	     smsgate:   sms.weigelt_(at)_metux.de
---------------------------------------------------------------------
 Diese Mail wurde mit UUCP versandt.      http://www.metux.de/uucp/


php::bar PHP Wiki   -   Listenarchive