Pregunta

Para un nuevo proyecto que necesito para cargar archivos XML grandes (200 MB +) a una base de datos MySQL. Hay + - 20 alimenta necesito para que coincida con ese (no todos los campos son los mismos)

.

Ahora cuando quiero coger el XML consigo este error:

Fatal error:  Allowed memory size of 134217728 bytes exhausted (tried to allocate 171296569 bytes) in E:\UsbWebserver\Root\****\application\libraries\MY_xml.php on line 21

¿Hay una solución fácil para esto? No es posible conseguir te de alimentación en partes de algunos de MB cada uno.

Muchas gracias!

P.s. tiene alguien una idea para que coincida con xml-alimenta fácil?

¿Fue útil?

Solución

Esto debería solucionarlo:

ini_set('memory_limit', -1);

Otros consejos

Si usted tiene que analizar archivos XML grandes (o archivos de gran tamaño en general), es una mejor estrategia para escribir una función basada en la corriente que uno que requiere que todo sea en la memoria al mismo tiempo. PHP tiene una clase llamada XmlReader , que le permite escanear a través de una archivo, un nodo a la vez. Puede que no sea trivial para cambiar el código para usarlo, pero se podría considerar la posibilidad de hacer el cambio.

entrada de Blog de eso hace un tiempo. La solución fue usar XMLReader leer trozos de XML en un objeto y hacer cosas con él, entonces.

Añadir ini_set ( 'memory_limit', '150 MB') en la secuencia de comandos.

Es PHP el único lenguaje de programación que se consideraría para el trabajo? Si utiliza Java, entonces hay maneras más eficientes y para cargar XML ..

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top