Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[PHP5/DOM] out of memory bij script execution

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb op mijn welserver bij de php een max ingesteld van 128M geheugen. echter ben ik nu bezig met het creeren van een xml export die een enorm xml file creeert. vervolgens moet deze gevalideerd worden tegen een DTD.

om dat te doen maak ik gebruik van DOMDocuments. het probleem daarbij is dat die domdocuments helemaal in het geheugen staat. de XML gaat nu naar verwachting ongeveer 500 tot 750MB worden dus het maximale geheugen iets uitbreiden is ook geen optie (de xml zal binnenkort ook nog veel groter worden dan dat)

nu is mijn vraag wat ik hier aan kan doen? we hebben opzich al overwogen om het op te splitsen in meerdere files, maar willen toch ook nog even proberen of er nog andere manieren zijn.

ook hebben we overwogen om het via een soort template systeem te doen en terwijl het nog samengesteld gaat wordt al te outputten in een file. maar om het te valideren zal hij toch weer ingeladen moeten worden. daarnaast ben ik ook niet zo'n fan van dat soort template constructies om xml te bakken.

  • Bergen
  • Registratie: Maart 2001
  • Laatst online: 07-09 11:44

Bergen

Spellingscontroleur

Mag ik vragen wat je dan allemaal in xml opslaat? Moet dat beslist met php en xml? Is PHP/XML wel bedoeld voor wat je doet?

[ Voor 20% gewijzigd door Bergen op 10-05-2008 07:28 ]


Verwijderd

XML files van 750+ MB lijkt me niet handig, dan kun je beter een database gebruiken, die zijn bedoeld om veel data te handlen. Maar als 't echt in XML moet, gebruik dan SAX ipv DOM...

Verwijderd

Topicstarter
het gaat om een feed die we moeten aanleveren aan een servertje. xml is het enige wat dat ding accepteerd en php is wat iedereen hier kan. ik kan het wel in C/C++ oid gaan schrijven, maar dan ben ik de enige die er wat van snapt. schiet dus niet op mocht ik ooit wat anders gaan doen.

  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Ik zou de XML feed gewoon als een file genereren (dus niet via DOM, maar met fwrite) en daarna de feed via een SAX reader en de DTD (XSD) valideren. Als de feed is gevalideerd kun je het bestand naar de download lokatie verplaatsen.

If it isn't broken, fix it until it is..


Verwijderd

Topicstarter
ik begin mezelf nu toch aardig dom te vinden ;)

DOM lijkt helemaal niet al zijn troep in het geheugen te mikken. het probleem was 1 heel simpel regeltje aan het eind.

ik had om te testen dit gedaan:
PHP:
1
2
3
<?
   echo strlen($oDomDoc->saveXML());
?>

en die plempt wel alles in het geheugen ;)
Pagina: 1