Twoje PC  
Zarejestruj się na Twoje PC
TwojePC.pl | PC | Komputery, nowe technologie, recenzje, testy
B O A R D
   » Board
 » Zadaj pytanie
 » Archiwum
 » Szukaj
 » Stylizacja

 
M E N U
  0
 » Nowości
0
 » Archiwum
0
 » Recenzje / Testy
0
 » Board
0
 » Rejestracja
0
0
 
Szukaj @ TwojePC
 

w Newsach i na Boardzie
 
OBECNI NA TPC
 
 » Kenny 18:35
 » Promilus 18:34
 » globi-wan 18:30
 » waski 18:28
 » NimnuL 18:20
 » DYD 18:18
 » wrrr 18:15
 » KHot 18:13
 » piotrszac 18:12
 » Master/Pe 18:12
 » ripek 18:08
 » Zbyszek.J 18:07
 » Jumper 18:05
 » Visar 18:04
 » Dexter 18:03
 » kyusi 18:01
 » PeKa 17:59
 » AdiQ 17:58
 » ngP 17:49
 » Lucullus 17:49

 Dzisiaj przeczytano
 33952 postów,
 wczoraj 29900

 Szybkie ładowanie
 jest:
włączone.

 
ccc
TwojePC.pl © 2001 - 2025
A R C H I W A L N A   W I A D O M O Ś Ć
    

PHP i duze XML, czym ugryzc , Deus ex machine 15/12/08 18:23
ostatnio XMLReader dawal rade, ale jak dostal XML co wazy 3,7G to sie wylozyl. Szukam czegos szybkiego (tylko do czytania XML jak leci od gory do dolu, bez jakis skokow i szukania ). A moze XMLReader potrafi jednak zjesc duze XML, tylko jakis parametr potrzebuje? Inna opcja jest jakis zewnetrzny program, ktory mi obrobi tego XML szybciej niz PHP (co chyba nie bedzie trudne, bo PHP demonem predkosci tu nie jest).

"Uti non Abuti"

  1. czo zawiera ten xml, co potrzebujesz z niego uzysakać , john565 15/12/08 18:41
    1234

    f*ck

    1. john565 zadal chyba najwazniejsze pytanie , Grocal 15/12/08 18:54
      W niektorych przypadkach wystarczy uzycie narzedzi spod linuksa - grepa, sed, awk, xsltproc. Mozna sie pokusic o odczytywanie pliku linia po linii w php, itd.

      Na pewno, na razie, w ogóle...
      Naprawdę, naprzeciwko, stąd...
      Ortografia nie gryzie!

      1. no to też w grę wchodzi , john565 15/12/08 19:00
        123

        f*ck

  2. a jakies , Deus ex machine 15/12/08 18:49
    kilkaset tysiecy takich tagow

    <trip date="2009-05-03" period="7" catalog="KL09" template="">
    <flight airlineCode="" airlineDesc="" flightNr="" fMCode="F">
    <departure code="BER" description="Berlin" fCode="" depDate="2009-05-03" depTime="00:00" arrDate="2009-05-03" arrTime="00:00"/>
    <destination code="VCE" description="Wenecja" depDate="2009-05-10" depTime="00:00" arrDate="2009-05-10" arrTime="00:00" retCode=""/>
    </flight>
    <hotel code="VCEMUSIC" destCode="VCE" city="Wenecja" region="Morze &#166;ródziemne WŁO" country="Włochy" name="Rejs wsch. M. Srodziemne" category="4.5" room="KBL" roomDescription="kabina z balkonem 2 osobowa" bookBeds="0" maintenance="V" maintenceDescription="Pelne wyzywienie" minAdults="2" maxAdults="2" minPersons="2" maxPersons="2" defPersons="2" hMCode="K" basePrice="1"/>
    <price adult="4399.00" currency="PLN"/>

    Odczytuje praktycznie kazdy atrybut. XMLReader wywala sie juz przy otwieraniu. Najwyzej, z palucha potne ten plik na mniejsze i bede parsowal mniejsze paczki.

    "Uti non Abuti"

    1. merlin jak widze , Grocal 15/12/08 18:56
      :)))))))))

      Na pewno, na razie, w ogóle...
      Naprawdę, naprzeciwko, stąd...
      Ortografia nie gryzie!

      1. dokladnie .) , Deus ex machine 15/12/08 19:03
        123...

        "Uti non Abuti"

        1. u mnie leci XMLReaderem , Grocal 15/12/08 19:15
          Skrypt php uruchamiany cyklicznie w cronie z duuuuuuza iloscia zaalokowanej pamieci (via php.ini). Patrze jednak w pliki, to nie mam gigantow wielkosci 3.7GB. Najwiekszy to Adriatyk - 1GB.

          Na pewno, na razie, w ogóle...
          Naprawdę, naprzeciwko, stąd...
          Ortografia nie gryzie!

          1. poszukaj , Deus ex machine 15/12/08 19:19
            w NPL NPL-LF-H.xml .) E tam nie musi miec duzo, ja pisalem caly parser na 32M .)

            "Uti non Abuti"

            1. tych klientow nie obslugujemy .) , Grocal 15/12/08 19:24
              ^_^

              Na pewno, na razie, w ogóle...
              Naprawdę, naprzeciwko, stąd...
              Ortografia nie gryzie!

      2. jaki merlin? , kubazzz 15/12/08 20:54
        o co tu chodzi?:)

        SM-S908

    2. jak masz w każdym elemencie to samo , john565 15/12/08 18:59
      czyli powiedzmy niech to będzie wszystko zamknięte w yagu <travel> to czemu nie napisać programu który bierze to jako tekst i zamienia powiedzmy w zapytanie sql czy co ci tam jest potrzebne

      f*ck

      1. a nie, nie jest powiedziane, ze masz to samo , Deus ex machine 15/12/08 19:05
        jakiegos atrybutu moze niebyc, a moze sie pojawic inny - to tylko taki przyklad pierwszy z brzegu. Niestety trzeba to przeparsowac z warunkami. Do SQL droga daleka, ale tak wlasnie te dane koncza .)

        "Uti non Abuti"

  3. a ręcznie napisać coś na SimpleXML w PHP? , kubazzz 15/12/08 19:10
    ja w sumie nie jestem jakoś obryty, ale to działa fajnie.
    Chociaż być może to ze względu na inny sposób działania może się jeszcze łatwiej wywalić...

    SM-S908

    1. SimpleXML , Deus ex machine 15/12/08 19:20
      laduje calosc do pamieci i trzyma w postaci tablicy - bardzo fajny do malych XML, do taki 'wiekszych' zupelnie odpada.

      "Uti non Abuti"

  4. a ostatnio to jaka wielkosc pliku byla? , Holyboy 15/12/08 22:16
    ja XMLReaderem spokojnie wczytywałem dane rzędu 2gb (a może i większe... baza wynikowa miała 5gb po pełnym imporcie)

    Rzecz jest prosta do zrobienia - wszakże to tylko proste czytanie pliku i obrabianie stringów, a nie żadna magia. :) Wczytujesz pojedyncze rekordy, robisz z ich zawartością to co tam musisz i wyrzucasz z pamięci. I tak przez cały plik.

    Co do szybkości to owszem demonem to nie jest, ale to nie jest wąskie gardło - ja wrzucałem dane do mysql'a i aby to miało ręce i nogi to baza musiała być na osobnym dysku. Po za tym jeżeli dyski nie będą wyrabiać to co jakieś 1000 lub 2000 dać sleep'a na jakieś pol sekundy.

    Strength is irrelevant.
    Resistance is futile.
    We wish to improve ourselves.

    1. zeby Ci XMLReader z , Deus ex machine 15/12/08 23:36
      poziomu php odczytal tak duzy plik, musiales miec prekompilowanego php na 64bity inaczej nawet fopen Ci nie zrobi handle do pliku .) Nawet jesli poprawnie zaladuje calosc to baza bedzie mogla miec ponad 10G. W tym jedna tabela jakies 8 mln rekordow, sam indeks by sie wczytywal kilka sekund. Na jednym serwerze jest ~30 baz, a to znaczy dla nich tylko jedno .) Nie zaladuje calosci, bo je zarzne.

      Grocal - Wlasnie sprawdzilem w tym jednym pliku jest ponad 6.500k terminow .) A to tylko jeden operator.

      "Uti non Abuti"

      1. hmm , Holyboy 15/12/08 23:56
        a robisz update'y czy tylko insert'y? Ja robiłem drop tabeli (całe szczęście mogłem), a czasem też indeksy wyrzucałem i później zakładałem.

        Strength is irrelevant.
        Resistance is futile.
        We wish to improve ourselves.

        1. 95% to nowe dane w bazie , Deus ex machine 16/12/08 01:19
          niestety nie moge wywalic wszystkiego, samo zaladowanie danych to insza kombinacja alpejska, zeby nie trwalo to godzinami, bo jest 70 baz do przeladowania i tak codziennie rano .)

          "Uti non Abuti"

    
All rights reserved ® Copyright and Design 2001-2025, TwojePC.PL