Mireczki mam pytanie, zrobiłem importer w PHP, który obsługiwał małe pliki XML, teraz przyszedł plik który ma 30 000 linii i niestety ten importer nie wyrabia (dużo akcji się dzieje na każdym rekordzie), a robiłem to tym sposobem https://www.w3schools.com/php/php_xml_simplexml_read.asp
Niestety teraz już wiem, że nie jest to najoptymalniejszy sposób do parsowania XML i muszę podzielić sobie te pliki na mniejsze i wtedy uruchamiać mój importer - moje pytanie brzmi: Jaką metodę polecacie do dzielenia plików na mniejsze? I w jaki sposób uruchamiać takie coś?
#webdev #php #xml #parser
Niestety teraz już wiem, że nie jest to najoptymalniejszy sposób do parsowania XML i muszę podzielić sobie te pliki na mniejsze i wtedy uruchamiać mój importer - moje pytanie brzmi: Jaką metodę polecacie do dzielenia plików na mniejsze? I w jaki sposób uruchamiać takie coś?
#webdev #php #xml #parser
wojtek656
2017-05-24 21:54:06
+1
@jaskowice1: buforowanie ( ͡° ͜ʖ ͡°)
xetrov
2017-05-24 22:27:23
+1
@jaskowice1: link wyżej masz odpowiedź: https://www.w3schools.com/php/php_xml_parsers.asp
Tree-based parsers holds the entire document in Memory and transforms the XML document into a Tree structure. It analyzes the whole document, and provides access to the Tree elements (DOM).
Example of tree-based parsers:
SimpleXML
DOM
Event-based parsers do not hold the entire document in Memory, instead, they read in one node at a time and allow you to interact with in real time. Once you move onto the next node, the old one is thrown away.
Example of event-based parsers:
XMLReader
XML Expat Parser
singollo
2017-05-24 22:27:13
+0
@jaskowice1: nadal musiałbyś odczytać cały plik xml, żeby go podzielić na mniejsze. Nie tędy droga.
lu43n
2017-05-24 23:50:44
+0
@jaskowice1 Przerzucić to na pythona i uruchamiać skrypt przez konsole lub w django przez celery
jaskowice1
[OP]
2017-05-25 06:35:04
+0
Benzen
2017-05-25 06:39:23
+0
D.....s
2017-05-25 06:40:24
+0
@jaskowice1 łap https://github.com/prewk/XmlStreamer a do tego dodaj XMLReader phpowy. U mnie daje rade z parsowaniem 1-2gb xmli na 5 procesach potomnych i wszystko pamieciowo się mieści