![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 764 Pomógł: 3 Dołączył: 30.04.2003 Ostrzeżenie: (0%) ![]() ![]() |
Witam serdecznie,
muszę przerzucić zawartość dosyć dużych plików XML (powyżej 100 mega) do bazy danych. Pytanie - w jaki sposób to mogę zrobić? Znalazłem jakieś tematy na ten temat na forum, ale nic takiego konkretnego co by mi pomogło. Niestety z wykorzystaniem simplexml nie bardzo wychodzi ponieważ serwer wywala błędy z racji tego, że zbyt dużo pamięci potrzeba do tej operacji. Będę wdzięczny za wszelkie wskazówki oraz jakiś przykładowy kod który będę mógł sobie przenieść i zastosować u siebie. Pozdrawiam, mhs. Ten post edytował mhs 26.11.2007, 11:37:22 |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Uzyj DOM'a, jesli tylko CZYTASZ XML'a to zuzywa on bardzo malo pamieci, wlasciwie O(1)
albo XMLReadera Ten post edytował dr_bonzo 26.11.2007, 13:18:00 -------------------- Nie lubię jednorożców.
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 461 Pomógł: 32 Dołączył: 17.09.2003 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
dr_bonzo: poczytaj o DOM'ie
![]() ![]() Jedynie jakieś SAX'y czyli np. XMLReader. |
|
|
![]()
Post
#4
|
|
![]() Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Kocurro - no wlasnie sprawdzalem zuzycie pamieci za pomoca funkcji w php i bylo ciagle stale, nawet dla duzych plikow, co mnie tez zdziwilo.
-------------------- Nie lubię jednorożców.
|
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 461 Pomógł: 32 Dołączył: 17.09.2003 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Te funkcje mogą błędnie zwracać wynik. Z tego co kojarzę to one podają tylko ilość pamięci zajętej przez Twoje zmienne. A nie podają ilości pamięci, która idzie na przechowywanie danych w modułach (extensions). Ale mogę się mylić.
W każdym bądź razie dla dużych danych lepiej SAX'a używać ![]() |
|
|
![]()
Post
#6
|
|
![]() Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Szit, Kocurro masz racje.
Glupie memory_get_usage() pokazuje ciagle male wartosci. A 'top' dla pliku 100MB wskazuje 200MB pamieci zajetej :/ -------------------- Nie lubię jednorożców.
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 461 Pomógł: 32 Dołączył: 17.09.2003 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
No niestety ... to memory_get_usage wskazuje zużycie pamięci wewnętrznej heap managera przez zmienne php'a ... niestety ilości pamięci zajmowanej przez samego php'a i jego moduły tak łatwo nie sprawdzisz (php bierze sobie dodatkową pamięć na heap managera a także moduły często mają własne bufory, strultury itp) ani chyba nawet nie ograniczysz (ale z tym nie jestem pewien).
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 24.06.2025 - 09:49 |