Speicherüberlauf beim Parsen mittels dom xml (große datei)

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Speicherüberlauf beim Parsen mittels dom xml (große datei)

    moin,

    ich habe einige probleme beim parsen von xml.

    zunächst erstmal ein beispiel für den xml quelltext:
    Code:
    <?xml version="1.0" encoding="WINDOWS-1251" standalone="yes" ?>
    	<kum_data>
    		<dataset>
    			<record id="0">
    				<value1>88</value1>
    				<value2>301</value2>
    				<value3>New City</value3>
    				<value4>1</value4>
    				<value5>2</value5>
    				<value6>361</value6>
    			</record>
    			<record id="1">
    				<value1>250</value1>
    				<value2>220</value2>
    				<value3>Elbenfestung</value3>
    				<value4>2</value4>
    				<value5>1041</value5>
    				<value6>47</value6>
    			</record>
    			<record id="2">
    				<value1>403</value1>
    				<value2>580</value2>
    				<value3>Aribeth01</value3>
    				<value4>3</value4>
    				<value5>1970</value5>
    				<value6>171</value6>
    			</record>
    </dataset>
    </kum_data>
    den versuche ich nun folgendermassen zu parsen:

    Code:
    function update_cities($url, $server)
    {
      mysql_query("TRUNCATE TABLE `" . $server . "_city`");
      
      $output = domxml_open_file($url);
      $cities = $output -> get_elements_by_tagname("record"); // <- schon da speicherüberlauf
      $id = 0;
      foreach ($cities as $knoten)
      { 
    //    echo "Speicher: ". memory_get_usage() . "<br>\n";
        $kinder = $knoten -> child_nodes();
        $i = 0;
        foreach ($kinder as $stadt)
        {
          $data[$i] = $stadt -> get_content();
          echo "(i=" . $i . ") " . $data[$i];
          $i++;
        }
        echo "<br>\n";
        // mysql_query();  ->nur datenbankeingabe
        $id++;
      }
     // echo "city update erfolgreich!";
    }
    folgender fehler tritt dann immer auf: "Fatal error: Allowed memory size of 8388608 bytes exhausted", da die anzahl der 'records' in der xml datei um die 40.000 betägt.

    wäre sehr schön, wenn mir jemand helfen könte

    gruß
    narak

  • #2
    hast du direkten zugriff auf die php.ini? wenn ja, mußt du
    max_exection_time und memory_limit hochsetzen. ansonsten

    gruß
    peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      hm, hab jetzt schon den admin kontaktiert und er hat mir 128 MB gegeben, statt vorher 8M.

      komme dadurch aber auch nur durch ~15.000 records. versuche jetzt mal mit unset() wieder speicher zu bekommen... *seufz*

      Kommentar

      Lädt...
      X