IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Analyser des fichiers XML de grande taille


Sujet :

Langage PHP

  1. #1
    Membre habitué Avatar de kanzarih
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Novembre 2002
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Novembre 2002
    Messages : 327
    Points : 197
    Points
    197
    Par défaut Analyser des fichiers XML de grande taille
    Bonjour,
    Après plusieurs heures de recherche j'hésite encore sur la façon de déborder ce sujets, bref, je doit parser des fichiers XML de grandes tailles (minimum 25 mb) en PHP en premier lieux je me suit penché sur DOM et la bibliothèque libre DOMit, aprés je me suis dit pourquoi ne pas utiliser soit SimpleXML ou simplement la fonction XML_tree de PHP5 j'ai même penser a coder mon propre parseur. mais dans tous ce bazar je doit me tourner vers quelqu'un plus expérimenté dans le sujet.

    Alors quel approche me conseillez vous SVP.

    Merci

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    Que souhaites-tu faire sur ce fichier ?

    S'il s'agit d'une extraction simple (un élément), je te conseille une lecture par la biais d'une expression régulière (preg_match).

    S'il s'agit d'une lecture continue (n noeuds), utilise un strpos avec un décalage du paramêtre offset à chaque lecture.

    DOM ou SimpleXML chargent le fichier en mémoire, ce qui signifie que chaque exécution de ton script consomme minimum 25mo de RAM. Cela peut potentiellement devenir dangereux multiplié par ton nombre d'utilisateurs.

    PS : Le format XML n'est pas destiné aux gros volumes de données, si tu as la main sur le choix du format de stockage, je te conseille plutôt une base de données, même simple, comme MySQL ou PostgreSQL.

  3. #3
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    Il y a aussi XMLReader : http://fr2.php.net/manual/fr/class.xmlreader.php

    Même si je l'ai essayé, je ne l'ai pas fais sur de gros fichiers, donc impossible d'en dire sur ce point.
    Mais il me semble avoir retenu que cette classe serait pas mal dans un cas comme celui ci, car elle ne chargerait pas l'intégralité du document en mémoire (ce qui serait le cas de DOMDocument et SimpleXML).

    J'ai tout de même noté que la lecture/parcourt n'est tout de même aussi pratique que DOMDocument ou SimpleXml.

    C'est pas grand chose, mais si ça peut aider.

  4. #4
    Expert confirmé
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Points : 4 853
    Points
    4 853
    Par défaut
    Citation Envoyé par RunCodePhp Voir le message
    +2

    XML reader est ton ami, j'ai eu à l'utiliser pour des très gros fichier XML, non seulement qu'il est hyper rapide, il bouffe également peut d'espace en mémoire.

    Le seul soucis est qu'il n'est pas simple à coder.

  5. #5
    Membre habitué Avatar de kanzarih
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Novembre 2002
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Novembre 2002
    Messages : 327
    Points : 197
    Points
    197
    Par défaut
    Bonjour,

    Merci pour vos réponses, en fait j'ai la main sur le choix mais je ne peut changer le XML car c'est le but même du projet, qui consiste a trouvez une solution pour codé une librairie qui peut être utilisé comme base de données pour des petit et moyen application web.

    j'ai tous de même essayer de concevoir une solution pour ne pas avoir des fichier XML de grande taille, et ce en fixant la taille des fichiers XML jouent le rôle de support de stockage, et si un fichier dépasse cette taille, le système créera un nouveau et continue l'enregistrement dedans, bien évidement les fichiers serons indexés et l'index en cours sera stocké quelque part pour une future utilisation de plus le taille du fichier en cours d'utilisation sera calculer avant chaque opération pour décider si on continue l'enregistrement ou on passe a un nouveau index et donc un nouveau fichier. avec cette solution j'aurai plusieurs fichiers XML de taille fixe dont je peut manipuler par SimpleXML.

    Que dite vous de cette conception? j'aimerai bien avoir votre avis avant de débuter le codage?

    Merci

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 448
    Points : 2 284
    Points
    2 284
    Par défaut
    +3 pour xmlreader.

    Pour l'autre question, pourquoi ne pas utiliser une bdd sqlite ? ...

  7. #7
    Membre habitué Avatar de kanzarih
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Novembre 2002
    Messages
    327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Novembre 2002
    Messages : 327
    Points : 197
    Points
    197
    Par défaut
    Citation Envoyé par kaymak Voir le message
    +3 pour xmlreader.

    Pour l'autre question, pourquoi ne pas utiliser une bdd sqlite ? ...
    Bonsoir kaymak,

    J'ai rien contre sqlite, au contraire, je l'utilise dans les plus part de mes projets il est TOP .

    Pour le projet; que j'ai déjà commencé; il s'agit d'un défit, codé une librairie pouvant être utilisé comme une BD, et qui peut être la base pour d'autre personnes pour abordé le sujet XML. Et qui sait un jours cette librairie peut être une des plus puissants si je trouve des personnes intéressé par le sujet pour m'aider d'ailleurs j'ai installé une plateforme pour pouvoir travaillé avec d'autre personnes enligne (http://www.farkess.com/BIBOS/)

    Si vous ete intéressé je vous donnerais un compte pour commencé

    Merci

Discussions similaires

  1. Parser fichier XML de grande taille
    Par HackerNet dans le forum Format d'échange (XML, JSON...)
    Réponses: 0
    Dernier message: 09/08/2013, 15h36
  2. Travailler avec un fichier XML de grande taille
    Par Jayme65 dans le forum Flash
    Réponses: 9
    Dernier message: 29/05/2006, 18h09
  3. [xml][asp_vbscript] Taille de fichier XML trop grande...
    Par nicko5959 dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 06/03/2006, 12h50
  4. Optimiser l'affichage d'un fichier XML de grosse taille...
    Par UnPeuPerdu dans le forum XML/XSL et SOAP
    Réponses: 11
    Dernier message: 03/06/2004, 17h01
  5. parser des fichier .xml en perl
    Par djibril dans le forum Modules
    Réponses: 13
    Dernier message: 18/05/2004, 18h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo