Webmaster Hub: Très gros fichier XML - Webmaster Hub

Aller au contenu

Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

Très gros fichier XML Comment le séparer en plusieurs parties ? Noter : -----

#1 L'utilisateur est hors-ligne   captain_torche 

  • Danacol / Orangina rouge
  • Voir le blog
  • Groupe : Admin
  • Messages : 6 722
  • Inscrit(e) : 08-février 06
  • Genre:Homme
  • Localisation:Savigny / Orge

Posté 29 avril 2008 - 15:45

Un de nos fournisseurs nous envoie un fichier XML (une base de données, en fait), pesant plus de 300 Mo.
Je sais que j'y ai presque 100 000 entrées, et j'aurai besoin, pour traitement, de pouvoir le scinder en plusieurs parties (une pour chaque entrée, pour faire simple).
Malheureusement, je ne vois pas comment faire : je sature la mémoire de PHP si j'essaye de le scripter, et je ne vois pas d'autre méthode pour le faire "off-line".
L'un d'entre vous aurait-il déjà travaillé sur des fichiers de cette taille ?
Vous avez rêvé cette nuit ? Partagez vos rêves sur l'Onironaute !
Bijoux fantaisie
Recherche nounou
0

#2 L'utilisateur est hors-ligne   Ifmy 

  • Groupe : Hubmaster
  • Messages : 148
  • Inscrit(e) : 22-juillet 05
  • Genre:Homme
  • Localisation:Arlon, Belgique
  • Société:Farvest Group

Posté 29 avril 2008 - 16:04

Tu satures la mémoire de PHP ? oO quelle erreur t'es renvoyée ? tu utilises xml_parse ... ou un fopen à l'ancienne ?
Ce n'est pas plutôt le délais de traitement qui est trop court ? dans ce cas il suffit de modifier les paramètres du serveur, le temps de traiter le fichier.
0

#3 L'utilisateur est hors-ligne   captain_torche 

  • Danacol / Orangina rouge
  • Voir le blog
  • Groupe : Admin
  • Messages : 6 722
  • Inscrit(e) : 08-février 06
  • Genre:Homme
  • Localisation:Savigny / Orge

Posté 29 avril 2008 - 16:10

non, pour l'instant je n'utilise que fopen, je n'ai pas besoin dans un premier lieu de tout connaître du fichier XML en question.
Pour la saturation de la mémoire, c'est également une supposition, vu que je n'ai pas de message d'erreur.
Pour info, voilà comment je procède pour l'instant :
- Je lis le fichier '300Mo.xml'
- Avec une expression régulière, je délimite les bornes des expressions à séparer
- je crée autant de fichiers que j'ai d'entrées dans mon tableau généré par preg_match_all.

Après réflexion, il se pourrait que ce soit dans la seconde étape qu'il y ait un souci : je retrouve constamment le même nombre de fichiers à l'arrivée (5042), cela pourrait-il être dû à une limitation de la fonction ?

Je suis en train de réfléchir à une autre méthode, sans doute moins gourmande, en travaillant sur un fichier temporaire que je "décrémenterai" à chaque étape.
Vous avez rêvé cette nuit ? Partagez vos rêves sur l'Onironaute !
Bijoux fantaisie
Recherche nounou
0

#4 L'utilisateur est hors-ligne   Portekoi 

  • Calimérosateur / Dictationneur
  • Groupe : Admin
  • Messages : 3 692
  • Inscrit(e) : 12-janvier 05
  • Genre:Homme
  • Localisation:Meaux
  • Société:CGD

Posté 29 avril 2008 - 16:26

tu parses un nombre de tag (1000), tu les supprimes, tu recréé le fichier, tu rafraichis la page et tu boucle tant que tu as des balises de valeurs

++
0

#5 L'utilisateur est hors-ligne   Ifmy 

  • Groupe : Hubmaster
  • Messages : 148
  • Inscrit(e) : 22-juillet 05
  • Genre:Homme
  • Localisation:Arlon, Belgique
  • Société:Farvest Group

Posté 29 avril 2008 - 18:42

Pourquoi ne pas créer les fichiers à la volé ? Le cas présent il ne me semble pas utile de coller le tout dans un tableau qui au final te fait un tmp de 300 Mo + sûrement le fopen, etc... :wacko: je ne sais pas exactement comment est gérer tout ça. Dan saurait surement nous en dire plus :whistling:
0

#6 L'utilisateur est hors-ligne   captain_torche 

  • Danacol / Orangina rouge
  • Voir le blog
  • Groupe : Admin
  • Messages : 6 722
  • Inscrit(e) : 08-février 06
  • Genre:Homme
  • Localisation:Savigny / Orge

Posté 29 avril 2008 - 21:45

Le souci, c'est que je n'ai pas la main sur le fichier source : je reçois un fichier d'environ 300 Mo, à moi de le traiter , et justement je cherche à en réduire la taille en le scindant en autant de fichiers que j'ai d'entrées.
J'aurai sans doute plus d'infos sur la réussite de mon script demain ;)
Vous avez rêvé cette nuit ? Partagez vos rêves sur l'Onironaute !
Bijoux fantaisie
Recherche nounou
0

#7 L'utilisateur est hors-ligne   Ifmy 

  • Groupe : Hubmaster
  • Messages : 148
  • Inscrit(e) : 22-juillet 05
  • Genre:Homme
  • Localisation:Arlon, Belgique
  • Société:Farvest Group

Posté 30 avril 2008 - 14:10

Par à la volé j'entendais ne pas coller tout le résultat dans un tableau puis générer les fichiers mais générer les fichiers au fur et à mesure de la lecture du fichier source. :)
0

#8 L'utilisateur est hors-ligne   captain_torche 

  • Danacol / Orangina rouge
  • Voir le blog
  • Groupe : Admin
  • Messages : 6 722
  • Inscrit(e) : 08-février 06
  • Genre:Homme
  • Localisation:Savigny / Orge

Posté 30 avril 2008 - 14:13

Je suis en train d'essayer comme ça, mais c'est pour l'instant extrêmement lent.
Je vais voir si je peux trouver mieux ;)
Vous avez rêvé cette nuit ? Partagez vos rêves sur l'Onironaute !
Bijoux fantaisie
Recherche nounou
0

#9 L'utilisateur est hors-ligne   captain_torche 

  • Danacol / Orangina rouge
  • Voir le blog
  • Groupe : Admin
  • Messages : 6 722
  • Inscrit(e) : 08-février 06
  • Genre:Homme
  • Localisation:Savigny / Orge

Posté 30 avril 2008 - 14:39

Bon, un ancien collègue m'a dépanné, son script fonctionne bien mieux que le mien.
Dans le principe, il lit le fichier ligne par ligne, et génère les fichiers correspondant au fur et à mesure.
Vous avez rêvé cette nuit ? Partagez vos rêves sur l'Onironaute !
Bijoux fantaisie
Recherche nounou
0

Partager ce sujet :


Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

1 utilisateur(s) en train de lire ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)