Portál AbcLinuxu, 10. května 2025 08:01
Ahoj, řeším situaci kdy mám cca 30MB XML soubor s tisíci dat a potřebuji jej rozparsovat, některá data upravit a následně - ideálně v jednom cyklu - naimportovat do předpřipravené tabulky v MySQL. Teoreticky nějaké cesty vím, ale řeším správnou cestu z pohledu výkonu (operační paměť, konektivita k DB, doba trvání skriptu, ...). Mohl by někdo prosím poradit jaký zvolit pro takový moloch nejvýkonnější XML parser (DOM v PHP5, SimpleXML, SAX ...) ? Další otázkou je zda se u každého importováného záznamu připojovat k MySQL zvlášť - nevím jak by to zvládlo perzistentní připojení - a taky zda se vyplatí využít prepared statements? Spíš takový průzkum jak na to jít opravdu nejlépe, aby nestrádal server, DB, ... Ještě poznámka : omezení hostingu jsou - max. execution time 360s a memory limit 75 - obávám se, že na jeden zátah to ani neudělám.
Díky
Osobně se mi pracuje líp s DOM, ale vim, že na tyhle věci optimální neni, tak sáhnu po SAXu. Po více záznamech to nějak určitě udělám, zkusim najít optimální počet. Naštěstí to bude takhle fungovat denně (resp. nočně :) a ta tabulka bude prázdná a vždycky se naplní od nuly znovu (přírustkově-úbytková metoda v tomhle případě není možná asi), tak s tím by problém být neměl. Záznamů bude něco kolem 13 tisíc, tak snad to do těch 6 minut projde.
Mě ještě napadlo si něco na ten import pouštět někde u sebe, na vlastním stroji, kde by člověk nemusel řešit maximální dobu běhu a memory limit. Pak z toho udělat normální SQL dump a ten přenést na hosting. Ale když teď píšete, že se to bude dělat nějak pravidelně...
Taky jsem si s touhle myšlenkou pohrával, ale právě ta denní pravidelnost vyžaduje prostě server + CRON a nestarat se o to.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.