PHP lucrează cu xml

Aș dori să detaliez sarcina: ce structură de document, cât de des va fi executată, care server, ce resurse sunteți gata să utilizați?

După cum a spus deja SimpleXML, DOM sau SAX indexează totul în memorie și 800 MB - nu este suficient. Deși pe un server cu mai multe gigaocteți de memorie RAM și cu o solicitare frecventă pentru această funcție, aș face acest lucru și nu voi suferi, în orice caz procesarea a 800 MB nu este o operație ușoară.







Există o mulțime de parseri care nu indexează nimic, dar trec prin fișiere obișnuite, am încercat să folosesc XMLReader, dar mă împiedică foarte mult, chiar și după optimizarea și încărcarea pieselor în SimpleXML, această opțiune nu a intrat în producție.







Ca rezultat, am scris parserul meu, care a citit secvențial fișierele, caracter cu simbol, creând blocuri de "elemente" direct "care au fost deja încărcate în SimpleXML și apoi procesate. Cred că această opțiune este singura care lucrează pentru fișiere mari și instrumente precum XMLReader pentru sarcini foarte restrânse, deși nu exclud că nu știu cum să le gătesc ".

Aceasta este experiența mea, eu nu pretind că sunt complete de cunoștințe, dar aceasta este într-adevăr o opțiune de lucru.

De asemenea, SAX nu încarcă întregul document în memorie - citește în bucăți mici și produce diverse evenimente când sunt detectate obiecte (început / sfârșit de nod, atribute, etc.). XMLReader este o alternativă ușor mai convenabilă față de SAX-y, deoarece de exemplu, vă permite să săriți noduri inutile (de exemplu, săriți nodul și toți copiii acestuia).

Deci, puteți să le folosiți, în locul parserului dvs., dacă îl puteți configura corect, nu-mi mai amintesc detaliile, dar nu am reușit.







Articole similare

Trimiteți-le prietenilor: