Questions concernant le parsing de flux XML en PHP
7 messages
• Page 1 sur 1
-

milkiway - WRInaute accro

- Messages: 4910
- Inscription: 3 Fév 2004
Questions concernant le parsing de flux XML en PHP
BOnjour,
Je suis totalement novice en ce qui concerne la gestion / parsing de flux XML avec PHP.
J'ai découvert SimpleXML, c'est super.
D'habitude je travaille avec MySQL mais là le flux XML vient de l'externe et doit être mis à jour toutes les 24h donc je ne peux pas passer par une BDD.
Seulement le flux fait 500 Mo...
Questions :
Je pense récupérer le flux tous les jours à minuit, le stocker en local puis le charger via :
[url]$flux = simplexml_load_file($xml);[/url]
Cette fonction va charger tout le flux en RAM ? Si oui mon serveur va exploser rapidement.
Et ça va être très lent non ? (parser un flux de 500 Mo à chaque page...).
Avec une BDD on ne charge que la / les lignes qui nous intéressent avec les champs qu'on veut.
Quel est le fonctionnement concret et quelles sont les ressources utilisées par le système pour un flux XML ?
Merci
Je suis totalement novice en ce qui concerne la gestion / parsing de flux XML avec PHP.
J'ai découvert SimpleXML, c'est super.
D'habitude je travaille avec MySQL mais là le flux XML vient de l'externe et doit être mis à jour toutes les 24h donc je ne peux pas passer par une BDD.
Seulement le flux fait 500 Mo...
Questions :
Je pense récupérer le flux tous les jours à minuit, le stocker en local puis le charger via :
[url]$flux = simplexml_load_file($xml);[/url]
Cette fonction va charger tout le flux en RAM ? Si oui mon serveur va exploser rapidement.
Et ça va être très lent non ? (parser un flux de 500 Mo à chaque page...).
Avec une BDD on ne charge que la / les lignes qui nous intéressent avec les champs qu'on veut.
Quel est le fonctionnement concret et quelles sont les ressources utilisées par le système pour un flux XML ?
Merci
-

fobec - WRInaute discret

- Messages: 112
- Inscription: 10 Mai 2005
Re: Questions concernant le parsing de flux XML en PHP
Bonjour,
il existe 2 méthodes pour parser un flux XML:
- DOM : le fichier est lu en entier pour construire un arbre avec les données. Tout le fichier est effectivement en RAM.
fonctions de type simplexml_load_file, XPath, ...
- SAX: le XML est lu au fur et à mesure. A chaque nœud, plusieurs évènements sont déclenchés dont on se sert en général pour alimenter un liste de donnée.
Avec 500Mo, la méthode SAX est la solution qui consomme le moins de ressources.
As-tu déjà fait des tests avec le flux XML ?
il existe 2 méthodes pour parser un flux XML:
- DOM : le fichier est lu en entier pour construire un arbre avec les données. Tout le fichier est effectivement en RAM.
fonctions de type simplexml_load_file, XPath, ...
- SAX: le XML est lu au fur et à mesure. A chaque nœud, plusieurs évènements sont déclenchés dont on se sert en général pour alimenter un liste de donnée.
Avec 500Mo, la méthode SAX est la solution qui consomme le moins de ressources.
As-tu déjà fait des tests avec le flux XML ?
-

milkiway - WRInaute accro

- Messages: 4910
- Inscription: 3 Fév 2004
Re: Questions concernant le parsing de flux XML en PHP
Bonjour,
Merci.
En fait pour l'instant j'utilise tout simplement ceci pour afficher mon flux :
Pour faire des essais. Je suis sur PHP5.
Ca m'affiche tous les titres soit des milliers de lignes.
Je voudrais faire des sortes de SELECT (comme sur MySQL) dans ce flux mais je ne vois pas comment faire.
Et pour tout dire, je n'ai pas compris la différence entre DOM, SimpleXML etc. C'est du chinois pour moi.
En fait j'aborde l'XML dans une logique base de données, tu vois ?
Exemple de flux :
Ici, par exemple, je voudrais pouvoir faire un genre de requête pour n'afficher le "title" QUE des CPU AMD et du vendeur 'Vendeur 1' (en imaginant qu'il y a 20 vendeurs différents).
Et c'est justement sur cette extraction que je bloque.
Merci.
En fait pour l'instant j'utilise tout simplement ceci pour afficher mon flux :
- Code: Tout sélectionner
$xml = 'xml/monflux.xml';
$flux = simplexml_load_file($xml);
foreach($flux->store->products->product as $product){
echo $product->title.'<br />';
}
Pour faire des essais. Je suis sur PHP5.
Ca m'affiche tous les titres soit des milliers de lignes.
Je voudrais faire des sortes de SELECT (comme sur MySQL) dans ce flux mais je ne vois pas comment faire.
Et pour tout dire, je n'ai pas compris la différence entre DOM, SimpleXML etc. C'est du chinois pour moi.
En fait j'aborde l'XML dans une logique base de données, tu vois ?
Exemple de flux :
- Code: Tout sélectionner
<?xml version="1.0" encoding="UTF-8"?>
<catalogue>
<store>
<name>Vendeur 1</name>
<products>
<product>
<trademark>Intel</trademark>
<title>Intel Core i5 760</title>
<desc>Un bon CPU pour tous les usages.</desc>
</product>
<product>
<trademark>Intel</trademark>
<title>Intel Core i7 760</title>
<desc>Un CPU pour les applications exigeantes</desc>
</product>
<product>
<trademark>AMD</trademark>
<title>AMD Phenom II X6</title>
<desc>Un CPU pour les serveurs</desc>
</product>
</products>
</store>
<catalogue>
Ici, par exemple, je voudrais pouvoir faire un genre de requête pour n'afficher le "title" QUE des CPU AMD et du vendeur 'Vendeur 1' (en imaginant qu'il y a 20 vendeurs différents).
Et c'est justement sur cette extraction que je bloque.
-

fobec - WRInaute discret

- Messages: 112
- Inscription: 10 Mai 2005
Re: Questions concernant le parsing de flux XML en PHP
regarde du coté de la fonction query de la librairie XPath. Il existe pas mal de tuto sur le net http://www.google.fr/search?q=PHP+Xpath+Query+regular
Avec les expressions régulières, on peut définir des filtres et se servir du XML comme d'une DB.
L'autre solution est de le faire soi-même en PHP dans la boucle foreach ou en passant par un array intermédiaire.
Avec les expressions régulières, on peut définir des filtres et se servir du XML comme d'une DB.
L'autre solution est de le faire soi-même en PHP dans la boucle foreach ou en passant par un array intermédiaire.
-

Julia41 - WRInaute passionné

- Messages: 1765
- Inscription: 31 Aoû 2007
Re: Questions concernant le parsing de flux XML en PHP
Pour ton fichier .xml qui fait 500Mo, je pense que PHP va subir.
Si tu es sous dedié, tu pourrais faire quelques tests.
Sinon, Simple_XML est la solution oui.
Si avant tu faisais un :
puis un :
Là avec ton foreach, c'est pareil.
Sauf que tu dois store quelque part avant d'analyser.
A ta place je rentrerais tout dans mysql avec ton foreach
et après avec ta requête.
Tu fais quoi comme type de SELECT ?
Sinon, en bash un:
cat fichier.xml | grep "ce que tu cherche"
Si tu es sous dedié, tu pourrais faire quelques tests.
Sinon, Simple_XML est la solution oui.
Si avant tu faisais un :
- Code: Tout sélectionner
SELECT trademark, title, desc FROM product
puis un :
- Code: Tout sélectionner
while ($arr = mysql_fetch_assoc($query)) {
}
Là avec ton foreach, c'est pareil.
Sauf que tu dois store quelque part avant d'analyser.
A ta place je rentrerais tout dans mysql avec ton foreach
- Code: Tout sélectionner
foreach ...
INSERT INTO $xml->bla->blb->blc
et après avec ta requête.
Tu fais quoi comme type de SELECT ?
Sinon, en bash un:
cat fichier.xml | grep "ce que tu cherche"
- mayalali
- Nouveau WRInaute

- Messages: 1
- Inscription: 6 Mai 2012
Re: Questions concernant le parsing de flux XML en PHP
bonjour, j'ai un souci avec le flux xml, en faite moi je cherche une fonction qui charge juste une partie de fichier xml, et ce fichier xml se trouve dans une adresse, donc elle parse juste une partie de ce flux et pas le fichier en entier, il existe un moyen de lire un flux xml en indiquant l'adresse de fichier xml et la partie a parser? merci de me répondre car j'ai cherché pas mal de tutoriels mais j'ai pas trouvé mon cas, SVP aider moi!
-

spout - WRInaute accro

- Messages: 4382
- Inscription: 14 Mai 2003
Re: Questions concernant le parsing de flux XML en PHP
C'est surement faisable avec: http://pipes.yahoo.com/pipes/
7 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- parsing xml
- Questions concernant des scripts php
- quelle librairie php pour valider un flux xml?
- Parser et mettre en page php un gros flux xml
- Parser un flux XML en PHP pour récupérer une valeur
- page basique en php / pour apeller un flux xml marche pas ;(
- Problème de fou avec parsage de flux xml traded*** et encodage utf8 en php
- fichier Sitemap.xml sur google: je rencontre un "130 Parsing error"
- Comment désindexer un flux rss (le flux xml) ?
- questions concernant le duplicate content
- Utiliser Actifpub pour l'intégration d'un flux RSS externe sur son site
- Intégrer facilement un flux RSS externe
- Un (RSS) pour tous (les blogs officiels de Google)
- Google Enterprise a son blog
- Annuaire WRI : intégration des flux XML des inscrits
- Le blog de Google Analytics
- Le blog officiel de Google Research
- Le blog officiel de Google au Japon
Consultez la description détaillée des produits ou services de Google suivants : Google Answers, API Google Checkout, Google Reader Trends
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités
