2010-02-08 8 views
2

J'ai un grand fichier XML (600mb +) et je développe une application PHP qui doit interroger ce fichier.Interroger un fichier XML volumineux (600mb +) en PHP ou JavaScript?

Mon approche initiale consistait à extraire toutes les données du fichier et à les insérer dans une base de données MySQL, puis à les interroger de cette façon. Le seul problème était que c'était encore lent, et que les données XML étaient mises à jour régulièrement - ce qui signifie que je dois télécharger, analyser et insérer des données du fichier XML dans la base de données chaque fois que le fichier XML est mis à jour.

Est-il réellement possible d'interroger un fichier de 600mb? (par exemple, rechercher des enregistrements où TITLE = "quelque chose ici"?) Est-il possible de le faire dans un délai raisonnable?

Idéalement, je voudrais faire cela en PHP, même si je pourrais aussi utiliser JavaScript.

Toute aide et suggestions ont apprécié :)

Répondre

1

Construire un DOM XML pour un document 600+ Mo est certainement un moyen d'échouer. Ce dont vous avez besoin, c'est d'une API basée sur SAX. SAX, cependant, ne permet généralement pas l'utilisation de XPath, mais vous pouvez l'émuler avec du code impératif. En ce qui concerne le fichier en cours de mise à jour, est-il possible de ne récupérer que les différences de toute façon? Cela accélérerait massivement le traitement ultérieur.

+0

J'ai essayé d'utiliser SAX - qui analyse bien le fichier mais est encore relativement lent - je pourrais vraiment faire quelque chose pour interroger le fichier. Je peux donner un autre essai à SAX si rien d'autre ne se présente - merci de répondre :) –

+1

@Flava L'analyse syntaxique basée sur SAX est généralement plus performante car elle permet le streaming de contenu de fichier. Assurez-vous que vous avez un tampon suffisamment grand pour que le disque IO soit exclu. –

Questions connexes