Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Import dużego pliku XML
nexis
post
Post #1





Grupa: Zarejestrowani
Postów: 1 012
Pomógł: 109
Dołączył: 26.09.2003
Skąd: nexis.pl

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


Posiadam cennik w formacie XML o rozmiarze ok. 26 MB (dla zainteresowanych umieszczam go tymczasowo TUTAJ).

Na serwerze pamięc tymczasowa jest ustawiona na 128 MB, więc pobranie tego pliku z zewnętrznego serwera działa bez problemu.

Problem pojawia się jednak przy jego odczycie i wykonywaniu operacji na podstawie odczytanych informacji, a ściślej mówiąc w tym kodzie:

  1. <?php
  2. require '../config.php';
  3.  
  4. mysql_query('TRUNCATE TABLE categories') or die(mysql_error());
  5.  
  6. $file = "cennik.xml";
  7. $fp  = fopen($file, "r");
  8. $data = fread($fp, filesize($file));
  9. fclose($fp);
  10.  
  11. $xml_parser = xml_parser_create();
  12. xml_parse_into_struct($xml_parser, $data, $vals);
  13. xml_parser_free($xml_parser);
  14.  
  15. $super = '';
  16.  
  17. foreach ($vals as $array) {
  18. switch ($array['tag']) {
  19. case 'GRUPAGLOWNA':
  20. if ($array['type'] == 'open') {
  21. mysql_query ("INSERT INTO categories VALUES ('" . $array['attributes']['ID'] . "', '', '" . $array['attributes']['NAZWA'] . "');") or die (mysql_error());
  22. $super = $array['attributes']['ID'];
  23. }
  24. break;
  25. case 'PODGRUPA':
  26. if ($array['type'] == 'complete') {
  27. mysql_query ("INSERT INTO categories VALUES ('" . $array['attributes']['ID'] . "', '" . $super . "', '" . $array['attributes']['NAZWA'] . "');") or die (mysql_error());
  28. }
  29. break;
  30. }
  31. }
  32.  
  33. ?>


Co kończy się błędem:

  1. Fatal error: Out of memory (allocated 43515904) (tried to allocate 32 bytes) in /internal/parser.php on line 16


Kiedy powyższy skrypt uruchamiam dla małej części pliku cennika, to wszystko działa. Więc pytanie mam takie: czy da się jakoś rozbudować powyższy skrypt, aby poradził sobie z takim plikiem czy też jest jakiś inny sposób (np. rozbicie dużego pliku na kilka mniejszych)?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Cezar708
post
Post #2





Grupa: Zarejestrowani
Postów: 1 116
Pomógł: 119
Dołączył: 10.05.2005
Skąd: Poznań

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


braku pamięci nie pokonasz musisz podzielić ten plik na kilka mniejszych, lub wymyślić inny pomysł na import danych (jakby nie patrzeć XML jest dość ciężki)
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: 10.10.2025 - 19:00