Parsing gros fichier XML 300Mo

Thématique Parsing gros fichier XML 300Mo, venez dialoguer avec de nombreux webmaster ! !

Forum webmaster


La Communauté Webmaster  forum rss
  Forum-webmaster
  Technique - programmation
  Langages de programmation divers
(Modérateurs: Shain, Fabien, Lilian)
  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 858 fois)
Parsing gros fichier XML 300Mo
« sur: le 17-03-2007 à 18:37:10 »
Shain
L'admin !
Administrateur
*****

Hors-Ligne

Sexe: Male
Messages: 3144



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   Connecté

Shain - 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 à 19:10:01 »
theonlydrayk
P'tit nouveau
**

Hors-Ligne

Sexe: Male
Messages: 123





Voir le Profil    WWW    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   Connecté

http://www.apoorlonesomegeek.com/
Re:Parsing gros fichier XML 300Mo
« Répondre #2 sur: le 17-03-2007 à 20:27:24 »
iowa
P'tit nouveau
**

Hors-Ligne

Sexe: Male
Messages: 165





Voir le Profil    WWW
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   Connecté

http://iow4.net
http://iow4.net/forum  mon forum aide au webmaster
Re:Parsing gros fichier XML 300Mo
« Répondre #3 sur: le 18-03-2007 à 01:04:55 »
Shain
L'admin !
Administrateur
*****

Hors-Ligne

Sexe: Male
Messages: 3144



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   Connecté

Shain - 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 à 01:37:09 »
theonlydrayk
P'tit nouveau
**

Hors-Ligne

Sexe: Male
Messages: 123





Voir le Profil    WWW    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   Connecté

http://www.apoorlonesomegeek.com/
Re:Parsing gros fichier XML 300Mo
« Répondre #5 sur: le 18-03-2007 à 10:59:47 »
iowa
P'tit nouveau
**

Hors-Ligne

Sexe: Male
Messages: 165





Voir le Profil    WWW
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   Connecté

http://iow4.net
http://iow4.net/forum  mon forum aide au webmaster
Re:Parsing gros fichier XML 300Mo
« Répondre #6 sur: le 18-03-2007 à 13:36:58 »
Shain
L'admin !
Administrateur
*****

Hors-Ligne

Sexe: Male
Messages: 3144



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   Connecté

Shain - 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 à 14:39:27 »
iowa
P'tit nouveau
**

Hors-Ligne

Sexe: Male
Messages: 165





Voir le Profil    WWW
Répondre avec citation

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

Rapporter au modérateur   Connecté

http://iow4.net
http://iow4.net/forum  mon forum aide au webmaster
Re:Parsing gros fichier XML 300Mo
« Répondre #8 sur: le 18-03-2007 à 14:48:29 »
Shain
L'admin !
Administrateur
*****

Hors-Ligne

Sexe: Male
Messages: 3144



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   Connecté

Shain - 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.
 
 
 
 

Choisissez votre forum :
Présentation
Discussions générales
Avis ?
A propos de Forum-webmaster
Présentation de services web
Actualité webmaster
Hébergement
HTML / CSS / XHTML
Javascript / DOM / Ajax
PHP / MySQL
Asp / Asp.net / IIS
Java
Python
Langages de programmation divers
Webdesign
Infographie
Flash / Director
Référencement
Le droit sur internet
Publicité - Affiliation
Formation[s]
Offres d'emploi
Demandes d'emploi
Recrutement bénévole
L'aparté ...
Matériel / Logiciel

 

Copyright Skalpel 2008 - Tous droits réservés

creation de site strasbourg