FAQ |
Kalender |
![]() |
#10 | ||
|
|||
Administratör
|
Citat:
Den typen av XML parser som brukar användas för streaming i de flesta språk kallas SAX parser. Den är lite jobbigare att komma igång med just pga dess event-baserade modell. Men som vanligt finns det på php.net exempel och ordentligt med dokumentation: se http://www.php.net/manual/en/book.xml.php Är du säker på att dina XML-filer inte växer och du har en server som klarar av det är det ingen fara att köra ett enklare API som laddar in hela filen. Men annars bör du verkligen titta på att streama parsingen. Jonas exempel med 50->150mb är inte ens så illa som det kan gå, det beror på datamängd vs attribut och nästling hur mycket minne som behövs. Sedan bara en amärkning på det om en "riktig relationsdatabas" är ju svårt att ta på. Antagligen så menas en relationsdatabas med tabelltyp som stödjer foreign key constraints, då det kan anses vara "riktiga" relationer. Tipset du fått här är dock att använda en transaktion och rollback om den inte gått igenom. Jag skulle vilja varna lite för att använda det på en delad webhost. För det allra mesta får du på dessa mycket bättre och pålitligare prestanda med MyISAM (båda pga att du med innodb "tävlar" med andra kunder om RAM-cachen men även att de ofta brukar vara så dåligt eller sparsamt konfigurerade för innodb) medans det på dedikerade servers/VPS ofta är precis tvärtom. Ett alternativ är att du skriver till en temporär tabell först, kör samma kontroll och sedan rensar tabellen istället för rollback och ersätter den riktiga tabellen istället för commit. Inte fullt lika säkert, men mer konsekvent resultat.
__________________
eldefors.com - Personlig (teknik)-blogg |
||
![]() |
![]() |
|
|