Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> XML i out of memory, zapis do jednej zmiennej
robus
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 8.03.2005

Ostrzeżenie: (0%)
-----


Cześć, mam plik XML, z którego chciałbym zczytać dane do zmiennej tablicowej $this->stack, ponieważ plik ma około 30MB wykrzacza się (Out of memory). Rozważałem już czytanie pliku po części żeby nie obciążąć pamięci niestety ten sam efekt. Zależy mi jednak żeby dane mieć w jednej zmiennej, ponieważ później całość porównywana jest z danymi znajdującymi się w bazie.

  1. function startElement($parser, $name, $attrs) {
  2.   $this->stack = array();
  3.    $tag=array("name"=>$name,"attrs"=>$attrs);
  4.    array_push($this->stack,$tag);
  5.  }
  6.  
  7.  function dataElement($parser, $data) {
  8.  if(trim($data)) {
  9.       $this->stack[count($this->stack)-1]['data']=$data;
  10.    }
  11.  }
  12. function endElement($parser, $name) {
  13.  $this->stack[count($this->stack)-2]['children'][] = $this->stack[count($this->stack)-1];
  14.   array_pop($this->stack);
  15.  }


Wykorzystanie zmiennej $this->stack:

  1. <?php
  2. for($j=0; $j<sizeof($this->stack[0][children][1][children]); $j++) {
  3. $a = $this->stack[0][children][1][children][$j][attrs][a];
  4. $ab = $this->stack[0][children][1][children][$j][attrs][ab];
  5. $zap = "SELECT COUNT(*) FROM test WHERE ab = '$ab'";
  6. $test = mysql_query($zap);
  7. $result = mysql_fetch_row($test);
  8. if($result[0] == 0) {
  9. $zapytanie = "INSERT INTO test (a_id, ab, a)
  10. VALUES (null, '$ab', '$a')";
  11. $out = iconv("UTF-8","ISO-8859-2", $zapytanie);
  12. mysql_query($out) or die(mysql_error());
  13. echo $j+1 .". Dodano pozycje $a ($a)<br/>";
  14. } else {
  15. echo $j+1 .".Pozycja $a ($a) już istnieje<br/>";
  16. }
  17. }
  18. ?>


Myślałem też o podziale pliku na kilka mniejszych jednak w tym przypadku nie specjalnie wiem jak sie za to zabrać.

Może wie ktoś w jaki sposób rozwiązać taki problem? Sugestie mile widziane.
Pozdr.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.12.2025 - 21:04