MySQL veritabanı büyük XML dosyaları yükleyin (PHP)

5 Cevap php

Yeni bir proje için bir mySQL veritabanına büyük XML dosyalarını (200MB +) yüklemeniz gerekir. Ben o ile maç gereken 20 beslemeler (değil tüm alanları aynıdır) - + vardır.

I XML yakalamak istediğinizde Şimdi bu hatayı alıyorum:

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

Bu kolay bir çözüm var mı? Bir kaç MB Birbirlerinin bölgelerinde te yem almak mümkün değildir.

Thank you very much!

P.S. Birine kolay xml-beslemeleri maç için bir fikri vardır?

5 Cevap

Bu düzeltmek gerekir:

ini_set('memory_limit', -1);

Eğer (ya da genel olarak büyük dosyaları) büyük xml dosyalarını ayrıştırmak için varsa, aynı anda bellekte olması için her şeyi gerektiren bir daha dere tabanlı bir fonksiyon yazmak için daha iyi bir stratejidir. PHP bir dosyaya taramak için izin verir XmlReader adında bir sınıf, bir kerede tek bir düğüm vardır. Onu kullanmak için kodunuzu değiştirmek için önemsiz olmayabilir, ancak değişiklik yapma düşünebilirsiniz.

Ben bir blog entry, bir süre önce bu konuda yazdı. Çözelti bir nesnenin içine XML parçalarını okumak ve sonra onunla bir şeyler yapmak için XMLReader kullanmak oldu.

Lütfen komut içine ('memory_limit', '150MB ') ini_set ekleyin.

PHP iş için düşünecektim tek programlama dilidir? Java kullanıyorsanız, o XML yüklemek için daha etkili yollar vardır ..