Zadejte hledaný výraz...

Optimalizace zpracování xml souboru

Taps
verified
rating uzivatele
(118 hodnocení)
1. 10. 2014 13:15:27
Zdravím, mám XML soubor o velikosti 3 MB, z tohoto souboru potřebuji vyseparovat data a provést aktualizaci údajů v databázi. V databázi má proběhnout update cca 2000 produktů. Pokud níže uvedený skript spustím, tak pracuje velmi dlouho a pak se zobrazí chyba serveru - 500. Existuje nějaká možnost jak skript zoptimalizovat, tak, aby v krátké časové době provedl parsování xml souboru a update produktů ?
Děkuji
1. 10. 2014 13:15:27
https://webtrh.cz/diskuse/optimalizace-zpracovani-xml-souboru/#reply1058491
martinzsa
verified
rating uzivatele
(1 hodnocení)
1. 10. 2014 14:17:35
bulk insert
v pripade napr sqllite pomaha pouzitie tranzakcie - vytvori sa transaction porobis inserty a po spracovani zavolas commit a co vlastne zapise vsetky udaje naraz do db
1. 10. 2014 14:17:35
https://webtrh.cz/diskuse/optimalizace-zpracovani-xml-souboru/#reply1058490
qwertr
verified
rating uzivatele
(7 hodnocení)
1. 10. 2014 14:46:44
Predpokladam, ze pomale je vykonanie 2000 updatov
Rozdelit spracovanie na dve casti.
1. cast - nacitanie toho xml do pola v php,
2.cast - operacie nad databazou
- vytvorenie pomocnej tabulku
- nasypanie tych 2000 zaznamom z pola do tej pomocnej tabulku pomocou bulk insert - format v zavyslosti od pouzitej databazy
- zaktualizovanie existujucich dat pomocou tej tempovej tabulky ako " update as select " - format v zavyslosti od pouzitej databazy
- zrusenie pomocnej tabulky
Dalsie ako to hore nepomoze zrusenie indexov na stlpce ktore aktualizujes.
Neviem, aky je timeout na vykonanie toho scriptu. Pozrel by som sa l na velkost pamete, ktore je obsadena, ale 3 MB xml a 2k zaznamov sa mi zda dost malo dat.
1. 10. 2014 14:46:44
https://webtrh.cz/diskuse/optimalizace-zpracovani-xml-souboru/#reply1058489
Filip T.
verified
rating uzivatele
(2 hodnocení)
1. 10. 2014 17:33:35
Co třeba použít $db->multi_query($query) ?
1. 10. 2014 17:33:35
https://webtrh.cz/diskuse/optimalizace-zpracovani-xml-souboru/#reply1058488
Smazany ucet 253
verified
rating uzivatele
(3 hodnocení)
14. 10. 2014 01:30:42
Jaké tabulky v MySQL používáte?
InnoDB má pomalé operace typu INSERT, UPDATE, DELETE. Pokud není potřeba využívat transakce, zvolte tabulku typu MyISAM a razantně tím zvýšíte rychlost updatování 2 tisíc položek v databázi. Pokud je nutné využívat transakce (a pravděpodobně je ..), pak vytvořte duplicitní tabulku v MyISAM, která se bude updatovat tímto scriptem a CRON pak zajistí dávkový přesun do InnoDB (nebo to lze vyřešit zavoláním AJAXu, který přesun spustí na pozadí a bude ho sám dávkovat). Pokud ani toto nepomůže, bude problém pravděpodobně v php.ini kde je nastaveno málo RAM paměti MEMORY_LIMIT a nebo MAX_EXECUTION_TIME (maximální běh scriptu). Ovšem tyto nastavení na koupeném hostingu nelze upravovat (alespoň co já vím), takže bude nutné VPS nebo Dedikovaný server .. či vlastní server :-)
Snad to trochu pomůže ....
14. 10. 2014 01:30:42
https://webtrh.cz/diskuse/optimalizace-zpracovani-xml-souboru/#reply1058487
Pro odpověď se přihlašte.
Přihlásit