![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 227 Pomógł: 1 Dołączył: 12.05.2002 Skąd: gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Muszę wykonać dość ambitną operacje napliku .xml a mianowicie plik.xml o romiarze 250Mb wprowadzić so SQL'a nie wiem do konca jak za to sie zabrać, chodzi o to by sparsować jego zawartość do języka SQL, rekordy odzielone są przez tagi <page></page> ale mniejsza z tym bo wiem jak to zrobić mam problem tylko jak wczytac krok po kroku jego zawartość, najlepiej aby pobrał najpierw pierwszy <page>terefere bla bla bla</page> (nie ladowal calosci) - obrobil poczym chwycil nastepny. są jakieś odpowidnie funkcje które się nadają się do takiej operacji ? z góry dzieki za helpa i pozdrawiam -------------------- Materiały i Wypracowania znajdziesz na zgapa.pl i
Encyklopedii Zgapedia Jedyny przedawkowany portal motoryzacyjny to autoholik.pl |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 1 566 Pomógł: 37 Dołączył: 14.05.2003 Skąd: Kraków ![]() |
|
|
|
![]()
Post
#3
|
|
![]() Developer Grupa: Moderatorzy Postów: 2 844 Pomógł: 20 Dołączył: 25.11.2003 Skąd: Olkusz ![]() |
musisz tak... (w php mimo wsyztko nie polecam tego robic, ale jak nie znasz innych jezykow).
set_time_limit
w php ini ustawic musisz maxymalny rozmiar pamieci zajmowanej przez php na ponad plik czyli calkiem sporo ![]() Teraz zalezy jak wczytujesz ten plik, mozesz jako xml (to co napisal ociu) badz tez jako zwykly plik i parsowac samemu (polecam to co napisal ociu). i ladujesz do bazy danych |
|
|
![]()
Post
#4
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 717 Pomógł: 0 Dołączył: 12.06.2002 Skąd: Wolsztyn..... Studia: Zielona Góra Ostrzeżenie: (0%) ![]() ![]() |
Oj slabo mu doradziliscie.. bardzo slabo
![]() simplexml jest pamieciozerny i nie poleca sie go do duzych xmli.. a 250MB to juz jest kawal pliku... simplexml w tym wypadku zarżnął by serwer. Zreszta nie.. bo memory_limit w php.ini by na to nie pozwolil.. a nawet jak go zwiekszyc to nie zapominajcie, ze 250MB plik XML wcale nie bedzie zajmowal w pamieci 250MB w postaci SimpleXML'a.. raczej duzo wiecej, wiec tego ramu mogloby czasem byc malo. W przypadku takich duzych plikow to jedynie przetwarzanie strumieniowe wchodzi w gre, zatem: http://www.php.net/manual/en/ref.xml.php Niestety to chyba ta najmniej przyjemna metoda na przetwarzanie XML'a, ale dla tego rozmiaru pliku nie widze innej sensownej opcji. -------------------- Brak czasu :/
|
|
|
![]()
Post
#5
|
|
![]() Developer Grupa: Moderatorzy Postów: 2 844 Pomógł: 20 Dołączył: 25.11.2003 Skąd: Olkusz ![]() |
Fido jak ma okolo 1gb ramu to bedzie najprostrzy sposob na zrobienie tego
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 1 597 Pomógł: 30 Dołączył: 19.02.2003 Skąd: Tychy Ostrzeżenie: (0%) ![]() ![]() |
oczywiscie, ze to najlepiej zrobic poprzez php.net/xml jak pisal FiDO, nawet pliki 40 mb tak robilem... i wcale to nie jest takie skomplikowane, kaszka z mleczkiem dla kodera
przy okazji dodam, ze czesto sa ograniczenia na czas procesora skryptu php, wiec jesli nie mamy serwera dedykowanego to proponuje sie zastanowic nad perlem, ktory tak nie molestuje procesora ![]() Ten post edytował sf 25.01.2006, 08:31:12 -------------------- Zapraszam na mój php blog, tworzenie stron.
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 717 Pomógł: 0 Dołączył: 12.06.2002 Skąd: Wolsztyn..... Studia: Zielona Góra Ostrzeżenie: (0%) ![]() ![]() |
Cytat(hwao @ 2006-01-25 08:15:08) Fido jak ma okolo 1gb ramu to bedzie najprostrzy sposob na zrobienie tego Obawiam sie, ze jednak nie ![]() Zrobilem na szybko maly test.. skrypt po zaladowaniu XML'a o wielkosci 7MB przez SimpleXML'a zajmowal ok 48MB w pamieci. Niestety taka obiektowa reprezentacja jest dosc mocno nadmiarowa, wiec roznice miedzy miejscem na dysku, a tym w pamieci sa dosc konkretne. Jesli by to przeskalowac na plik 250MB to wyjdzie, ze potrzeba prawie 2GB ramu... jest co prawda swap, ale to juz troszke przymulic kompa. Cytat oczywiscie, ze to najlepiej zrobic poprzez php.net/xml jak pisal FiDO, nawet pliki 40 mb tak robilem... i wcale to nie jest takie skomplikowane, kaszka z mleczkiem dla kodera Nie napisalem, ze skomplikowane.. ale nie jest tak proste jak SimpleXML. Trzeba troche innego podejscia, ale oczywiscie jest to jak najbardziej do zrobienia i nie jest to trudne. -------------------- Brak czasu :/
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 01:32 |