Sasa Posted April 29, 2012 Report Share Posted April 29, 2012 Lieta sekojoša apstrādāju nelielu xml dokumentu ar SimpleXML un saglabāju iekš datubāzes ar PDO, bet ir tā ka visa šī nelielā operācija izpildās kādu laiciņu un man pat sākumā nācās uzlikt set_time_limit(0); jo bez šī man operācija pārsniedz maksimālo izpildes laiku. XML ir produktu katalogs kurā ir info par pašu produktu, bildēm un pieejamiem izmēriem. Tad es sataisīju datubāzē tabulas produkti, produktu bildes, produktu izmēri. Bilžu un Izmēru tabulās ir produkta ID ar ko sasaistīt. Varbūt ja es atrādītu kodu kāds varētu ieteikt labāku risinājumu? Quote Link to comment Share on other sites More sharing options...
daGrevis Posted April 29, 2012 Report Share Posted April 29, 2012 Nu tas aizņem tik daudz laika, cik aizņem. Tev tāpat tas taču nebūs jādara katru reizi, vai ne? Ja vēlies ātrāku risinājumu, izmanto «veiklāku, ašāku» programmēšanas valodu – piemēram, Python. Quote Link to comment Share on other sites More sharing options...
Sasa Posted April 29, 2012 Author Report Share Posted April 29, 2012 Reizi pa reizi jau vajadzēs atjaunot datus no XML. Samierināšos ka man atjaunošana no XML aizņems ~ 75 sekundes. Otra lieta runājot par datubāzes ierakstu atjaunošanu, man ir tabula produktu bildēm un tabula produktu izmēriem, kad atjaunoju produktus es visu kas saistīts ar produktu pēc produkta ID no bilžu un izmēru tabulām dzēšu ārā un tad salieku atkārtoti ar jauniem ierakstiem kas nākuši no XML, tā es daru tik tāpēc ka nezinu cik man bilžu un izmēru atnāks ar jauno XML. Quote Link to comment Share on other sites More sharing options...
martins256 Posted April 29, 2012 Report Share Posted April 29, 2012 Noteikti izmanto batch insert - saglabā uzreiz 10 ierakstus datubāzē nevis pa vienam. Vēl vari izmantot XMLReader SimpleXML vietā, bet šo rekomendēju tikai tad, ja ievades xml paliek tiešām liels. Quote Link to comment Share on other sites More sharing options...
F3llony Posted May 1, 2012 Report Share Posted May 1, 2012 Bottleneck šeit būs nevis XML bet gan 50-100k kveriji uz katru XML'u, kas ievietojams preču datu bāzē :> Batch insert vai arī PHP konversija no XML uz CSV un ielāde ar LOAD DATA INFILE. Ja XML'ā vairāk kā 5-7m ierakstu, raksti geitveju vai batchprocesoru C vai kādā citā zema līmeņa valodā. daGrēvi, Pitons par PHP "ašāks un veiklāks" bija varbūt kaut kur ap 2005. gadu :> Quote Link to comment Share on other sites More sharing options...
martins256 Posted May 1, 2012 Report Share Posted May 1, 2012 Interesē kāpēc tieši pie 5-7m sāk atmaksāties C kodu xml parsēšanai? Quote Link to comment Share on other sites More sharing options...
F3llony Posted May 1, 2012 Report Share Posted May 1, 2012 Vispār jau zema līmeņa apstrāde atmaksāsies arī pie 5 ierakstiem pa 100B. Vienkārši pēc 5milj ierakstu uz vidējas "normālas" kastes, kas gan ir mans subjektīvais aprēķins, PHP kļūst tik neefektīvs, ka to vairs nav saprātīgi lietot, jo php vienkārši nav paradzēts šādiem darbiem - nepieciešamie resursi uzdevuma izpildei pārsniedz labumu, kas iegūstams no uzdevuma izpildes. Atmiņas wasteland, cpu laika lietojums un such. Pie tam grūtāk nolasīt failu pa blokiem un tādējādi taupīt atmiņu. Miljons un viens iemesls. Ja ir nevēlme ņemties ar C/c++, tik pat labi var izmantot arī mono vai vēl labāk- Go, kas ar šo darbu tiks galā vairāk kā lieliski, no paša pieredzes. Quote Link to comment Share on other sites More sharing options...
404 Posted May 1, 2012 Report Share Posted May 1, 2012 Kā vispār iespējams vienā postā ietilpināt tik daudz stulbību? Nu hren ar to,bet Miljons un viens iemesls izklausās varen interesanti. Kādus 10 nozīmīgakos varētu minēt,ņemot vērā ka lielus XML neviens ramā tāpat nelasa. Quote Link to comment Share on other sites More sharing options...
daGrevis Posted May 2, 2012 Report Share Posted May 2, 2012 > daGrēvi, Pitons par PHP "ašāks un veiklāks" bija varbūt kaut kur ap 2005. gadu :> Fjeļoni, get your facts straight. :> :> :> Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.