Yaros
17.03.2005, 19:42:49
Witam!! Poradzcie mi od czego moglym zaczac. Chce zrobic programik ktory bedzie parsowala pliki xml do tablicy w PHPie. Pliki XML bede duzo po kilkadziesiat mega. Mam tylko je odczytac i zapisac do tablicy. Wiem ze jest duzo sposobow. Ale chce zaczac juz pracowac z czyms , czego bede pewien. To znaczy ze nie okaze sie ze dziala dla malych plikow XML, a gdy przyjdzie testowanie na wiekszych to sie wykrzaczy. Uzywam php-a 4.3. Dzieki za wszelka pomoc.
Co na przyklad myslicie o domxml, rozszerzeniu dla php 4.3
Solitary
2.04.2005, 20:04:02
Wydaje mi się, ze rozwiązanie ładowania wszystkiego do pamieci nie jest najlepszym pomysłem. Pomyśl, jesli plik XML ma mieć kilkadziesiąc mega.. to wyobraź sobie ile czasu zajmie to phpowi i ile pamieci zajmie i czy przypadkiem (jesli nie masz wlasnego serwera tylko wykupiony) nie przekroczysz limitu pamieci dla procesów php.
Dodatkowym apektem jest strona www, jezeli to ma byc przez nia wykonywane a nie jako CLI, to takie rozwiazanie odpada calkowicie. Teoretyczne zalozenie, że po przeparsowaniu xmla zajmuje on w pamieci np. 50MB, teraz załóżmy, że weszło 10 użytkowników na strone (a strona wykonuje się np. 10-20 sekund), a więc mamy 500MB zajętej pamięci.
Moim zdaniem, lepiej jeszcze parsować segmentami.
Jezeli parsowac duze pliki XML, to przez SAX. Przynajmniej nie bedziesz trzymal dokumentu XML w pamieci. Niestety, trzeba trzymac sama tablice php, czyli wymagania pamieciowe i tak beda duze.
No i jak napisal Solitary, calkowicie odpada w przypadku serwisu WWW.