Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: OssoH en 19 Agosto 2013, 22:03 pm



Título: Lectura óptima XML pesado
Publicado por: OssoH en 19 Agosto 2013, 22:03 pm
Hola :
Tengo un XML muy pesado (más de 30MB) y quiero desarrollar un script php de forma que lea la estructura XML los items que me interesen y los guarde en la base de datos.


Habia pensado usar la libreria
http://www.lalit.org/lab/convert-xml-to-array-in-php-xml2array/

¿Que os parece?
¿seria la forma más rápida para hacer una busqueda de los items que me interese y guardar la estructura de ese item en una base de datos?

PD. Mi XML tiene atributos. Pero si me consejais eliminarlos para conseguir mayor velocidad no sería problema. Desconozco si el uso de atributos estorpece la facilidad de lectura y búsqueda en xml.

Gracias.


Título: Re: Lectura óptima XML pesado
Publicado por: #!drvy en 20 Agosto 2013, 15:59 pm
Hola,

30 mb no son mucho.. he visto personas que lo hacen con archivos de 4-5 GB xD

La librería que tienes pensado usar carga objetos del tipo DOM. Eso quiere decir que primero carga el archivo entero en la memoria y luego hace los requets.

Para archivos grandes, lo que te interesa es usar Pull requests. Que vayan "poco a poco" por el archivo y se paren en cada nodo en vez de cargar el archivo entero y todos sus nodos.

PHP trae una extensión así llamada XMLReader.
http://php.net/manual/es/book.xmlreader.php

PD: Tambien puedes mirarte las del tipo SAX.
http://www.brainbell.com/tutorials/php/Parsing_XML_With_SAX.htm

Saludos


Título: Re: Lectura óptima XML pesado
Publicado por: OssoH en 20 Agosto 2013, 16:11 pm
Gracias. Me has aclarado mis dudas.

Por lo que he leido XmlTextReader es mucho más rápido que SAX y más fácil de usar. Así que probaré con XMLTextReader.  ;-) ;-)