La Communauté Webmaster  forum rss


  Forum-webmaster
  Technique - programmation
  Langages de programmation divers
(Modérateurs: Shain, Lilian, lauryv, ToToMaStEr)
  Parsing gros fichier XML 300Mo
« Précédent Suivant »
Pages: [1] Descendre
Répondre    Aviser des réponses    Envoyer le sujet    Imprimer
  Auteur  Sujet: Parsing gros fichier XML 300Mo  (Lu 4280 fois)
Parsing gros fichier XML 300Mo
« sur: le 17-03-2007 a 18:37:10 »
Shain
Administrateur
*****

Hors-Ligne

Sexe: Male
Messages: 3168



Grand méchant Admin !

Voir le Profil    WWW
Répondre avec citation

Je crois qu'il y en a quelques un sur le forum qui utilisent les XML fournis par Webmastravel. Je voulais savoir comment vous faisiez pour parser les fichiers XML super lourds.

Est-ce que vous faites ça avec PHP (ou ASP) ? Vous avez développé un script en C sur votre serveur ?

J'aimerai pouvoir parser un fichier de 300Mo et enregistrer les items dans une base mysql mais là je ne vois pas comment faire vu le poid  ...

Merci pour votre aide !

Rapporter au modérateur  

Shain - Co-Admin Forum Webmaster
e-commerce strasbourg
Outil gestion de contenu CMS
Tutoriaux Flex & AIR

Re:Parsing gros fichier XML 300Mo
« Répondre #1 sur: le 17-03-2007 a 19:10:01 »
theonlydrayk
Invité

E-Mail
Répondre avec citation

Il m'est arriver de parser un fichier CSV de 500 meg (les donner de recherche de AOL qui ont ete rendu publique) avec du php, je lai executer dans un shell SSH et pas dans un browser.

Pour le XML il faudrait probablement faire un petit analyseur maison (lire par petit bloque le fichiers) plutot qu'utiliser celui de php 5 ou certaines fonctions fait pour le xml en php 4, loader un fichier comme ca en memoire pour l'analyser va prendre plusieurs fois ca taille en memoire.

Tu compte faire ca 1 fois ou regulierement ?

Rapporter au modérateur  
Re:Parsing gros fichier XML 300Mo
« Répondre #2 sur: le 17-03-2007 a 20:27:24 »
iowa
Invité

E-Mail
Répondre avec citation

Si tu le fait en PHP change le time_limit. Si tu veux parser le fichier sur ton hebergement mutualisé tu n'as pas le choix, si tu as un serveur dédié tu peux écrire un programme que tu peux appeller en PHP ou avec un Cron

Rapporter au modérateur  
Re:Parsing gros fichier XML 300Mo
« Répondre #3 sur: le 18-03-2007 a 01:04:55 »
Shain
Administrateur
*****

Hors-Ligne

Sexe: Male
Messages: 3168



Grand méchant Admin !

Voir le Profil    WWW
Répondre avec citation

Je dois faire ca chaque soir ... le pb n'est pas de lancer le script en cron (pas de soucis pour ca), mais plutot de le faire fonctionner ! Je m'était fait un petit script pour parser le fichier, mais je l'ai laissé tourner 17h (lancé en SSH) sans qu'il y arrive ! En php ca me semble vraiment délicat :-/

Theonlydrack, tu avais fait comment pour ton fichier de 500Mo ? L'execution du script avait pris cb de temps ?

Rapporter au modérateur  

Shain - Co-Admin Forum Webmaster
e-commerce strasbourg
Outil gestion de contenu CMS
Tutoriaux Flex & AIR
Re:Parsing gros fichier XML 300Mo
« Répondre #4 sur: le 18-03-2007 a 01:37:09 »
theonlydrayk
Invité

E-Mail
Répondre avec citation

Moi c'etait un fichier CSV et pas XML.

Jai dabord utiliser un file_get_contents pour avoir le fichier. Mais ca prenais enormement de memoire et etais tres long a charger. (Jai jamais attendu la fin)

Alors je fait un fgets et je lisait le fichier 1 ligne a la fois
http://www.php.net/manual/fr/function.fgets.php

Jai executer le script 1 seule fois et je ne me souvient vraiment pas le temps que ca avais pris.

Si ton XML est bien former avec une fin de ligne a la fin de chaque tag. Tu pourrais faire la meme chose. Lire 1 ligne a la fois du fichier et analyser avec un regex ou strpos le plus rapide chaque string.

Essaye dabord un fread pour le stocker localement le fichier (je suppose que tu utilise un fget/file_get_content et tu travail sur une variable ?)
Avec un fread-fwrite pour ecrire le fichier localement tu devrait sauver du temps. Le disque dur est plus rapide que la connextion internet. Et tu va p-e tomber en timeout si tu lanalyse direct de la connection.
Tu va deja savoir combien ca prend de temps de le copier venant du site web au disque dur.

Si tu utilise la fonction XML de php5 ou le charger dans un array ou autre fonction xml de php4, ca va etre impossible ca c'est sur. Le xml parse dabord le fichier pour voir si il est valid et le re-parse pour le mettre dans un array. Un array prend plusieurs fois ca taille en memoire a cause de la facon dont il est stocker.

Jespere que ca va taider

Rapporter au modérateur  
Re:Parsing gros fichier XML 300Mo
« Répondre #5 sur: le 18-03-2007 a 10:59:47 »
iowa
Invité

E-Mail
Répondre avec citation

Salut,

Si tu peux exécuter des programmes, l'idéal serait de faire un exe avec Dotnet qui implémente XPath et qui est très efficace avec le Xml.
Est-ce possible dans ton cas ?

Rapporter au modérateur  
Re:Parsing gros fichier XML 300Mo
« Répondre #6 sur: le 18-03-2007 a 13:36:58 »
Shain
Administrateur
*****

Hors-Ligne

Sexe: Male
Messages: 3168



Grand méchant Admin !

Voir le Profil    WWW
Répondre avec citation

C'est un serveur Linux, ca marcherai un exe sous Dotnet ?

Rapporter au modérateur  

Shain - Co-Admin Forum Webmaster
e-commerce strasbourg
Outil gestion de contenu CMS
Tutoriaux Flex & AIR
Re:Parsing gros fichier XML 300Mo
« Répondre #7 sur: le 18-03-2007 a 14:39:27 »
iowa
Invité

E-Mail
Répondre avec citation

Pour Dotnet sous Linux il y a Mono mais bon ... c'est pas top.

Rapporter au modérateur  
Re:Parsing gros fichier XML 300Mo
« Répondre #8 sur: le 18-03-2007 a 14:48:29 »
Shain
Administrateur
*****

Hors-Ligne

Sexe: Male
Messages: 3168



Grand méchant Admin !

Voir le Profil    WWW
Répondre avec citation

J'ai demandé sur un autre forum, y a pas mal de monde qui utilise SimpleXML et PHP5 ...

Je crois que je vais prendre un petit serveur dédié chez OVH pour avoir PHP5 et de la ressource serveur pour essayer.

Rapporter au modérateur  

Shain - Co-Admin Forum Webmaster
e-commerce strasbourg
Outil gestion de contenu CMS
Tutoriaux Flex & AIR
Répondre    Aviser des réponses    Envoyer le sujet    Imprimer
Pages: [1] Monter
« Précédent Suivant »
Sauter à: 

Votre statut : Invité
Vous devez être membre pour participer.
 
 
Let’s Encrypt : le certificat SSL gratuit
Tester votre site internet sur différents navigateurs
[WordPress] Des problèmes avec l’administration ?
Rappel : Mettez à jour vos CMS et vos sites E-commerce
Le .fr fête ses 25 années d’existence !
Mesurer votre audience en temps réel avec BubbleStat
Porter réclamation contre Google Panda ?
Zlio n’est plus …
 
 
 
 
 

Copyright (c) Devclic 2002 - 2026 - Tous droits réservés

creation site internet strasbourg