تحميل ملفات XML الكبيرة إلى قاعدة بيانات MySQL (PHP)

StackOverflow https://stackoverflow.com/questions/1654323

  •  11-09-2019
  •  | 
  •  

سؤال

للحصول على مشروع جديد أحتاج إلى تحميل ملفات XML الكبيرة (200 ميجابايت +) إلى قاعدة بيانات MySQL. هناك + - 20 خلاصات أحتاج لتتناسب مع ذلك (وليس كل الحقول هي نفسها).

الآن عندما أرغب في التقاط XML، أحصل على هذا الخطأ:

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

هل هناك حل سهل لهذا؟ من غير الممكن الحصول على تغذية في أجزاء من عدد قليل من ميغابايت لكل منهما.

شكرا جزيلا!

PS لديه شخص ما فكرة مطابقة تغذية XML سهلة؟

هل كانت مفيدة؟

المحلول

هذا يجب إصلاحه:

ini_set('memory_limit', -1);

نصائح أخرى

إذا كان لديك تحليل ملفات XML الكبيرة (أو الملفات الكبيرة بشكل عام)، فهي استراتيجية أفضل لكتابة وظيفة قائمة على الدفق أكثر من واحد يتطلب كل شيء في الذاكرة في نفس الوقت. PHP لديه فئة تسمى XMLReader., ، يتيح لك المسح الضوئي من خلال ملف، عقدة واحدة في وقت واحد. قد لا تكون تافهة لتغيير التعليمات البرمجية الخاصة بك لاستخدامها، ولكن قد تفكر في إجراء التغيير.

كتبت أ مدونة المدونة عن ذلك منذ فترة. كان الحل استخدام XMLReader لقراءة قطع XML في كائن وفعل الأشياء معها بعد ذلك.

أضف ini_set ('memory_limit'، '150mb') في البرنامج النصي الخاص بك.

هي PHP لغة البرمجة الوحيدة التي ستفكر في الوظيفة؟ إذا كنت تستخدم Java، فهناك طرق أكثر وفعالية لتحميل XML ..

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top