parser gros fichier XML

Eléphanteau du PHP | 11 Messages

26 mars 2009, 16:00

Bonjour,

Que me conseillez-vous pour parser un fichier qui peut aller jusqu'à 100Mo ???
Je n'arrive pas à faire ce que je souhaite avec XMLReader.

Personne ne peut m'aider ??? Je suis un peu perdu !!!!

ViPHP
ViPHP | 2144 Messages

27 mars 2009, 20:00

Salut,

100Mo c'est en effet un peu lourd pour un traitement à la volée en php sur un serveur de site, si les traitements que tu dois faire sont un peu lourd.

Tu peux nous en dire un peu plus ?
- fréquence de traitements
- type d'opération a effectué
- type de serveur
- etc

Eléphanteau du PHP | 11 Messages

30 mars 2009, 14:01

En fait ce serait des fichiers quotidiens qui servent à mettre à jour une base de données.
Pour l'instant je ne sais pas sur quel serveur ni quelle base. Il faut d'abord que j'étudie la faisabilité de la chose.

Eléphanteau du PHP | 31 Messages

15 avr. 2009, 13:12

Pour un tel fichier à traiter, mets-toi sur Java plutôt que PHP... Et surtout, tu ne nous as pas précisé ce que tu souhaitais faire.

ViPHP
ViPHP | 3300 Messages

15 avr. 2009, 13:52

java plutot que php, damn c'est le deuxieme message aujourd'hui que je vois ici parlant de java comme solution pour un besoin php, faut arrêter le délire java c'est un techno dépassée qui n'est jamais le bon choix pour un probleme donné.

en php tu utilises un fopen un fgets et les fonctionalités sax de la libxml (et surtout pas de dom, de simplexml ou de xmlreader) et si tu fais ca ton fichier peut faire 2 terras ou 1mo ca changera pas grand chose niveau occupation de la ram.

Au passage pour résumer le probleme il s'agit de stocker trop de donnée dans une variable, et de la représenter sous forme d'un objet gigantesque, tu aurais le meme probleme quelquesois le langage c'est une question de stratégie pas de technologie.

référence sax:
http://fr2.php.net/manual/fr/ref.xml.php
Fait du php depuis que ca existe ou presque :)

Eléphanteau du PHP | 31 Messages

15 avr. 2009, 14:23

Désolé Nagol, tu est contre Java?

Oui moi j'aime bien le PHP comme toi, mais connais-tu assez bien Java pour dire que "c'est un techno dépassée qui n'est jamais le bon choix pour un probleme donné"?

J'apprécie moyennement ce que tu as dit:
c'est une question de stratégie pas de technologie
Sachant que chaque technologie a quand-même ses limites, et c'est pour cela qu'on a créé autant de technologies différentes.

En tout cas, je suis sûr que tu connais mieux le PHP que moi, je vais apprendre beaucoup de toi. Merci :)

ViPHP
ViPHP | 3300 Messages

15 avr. 2009, 14:43

Désolé Nagol, tu est contre Java?
Oui, et contre tous les herzatz de java comme dotnet, pour tout plein de raisons dont leur faibles ouvertures syntaxiques sur les autres langages (comme le C), leur lourdeur due au tout objet sans concession, et leur cas d'utilisation inadapté juste parceque les développeurs savaient en faire.
Oui moi j'aime bien le PHP comme toi, mais connais-tu assez bien Java pour dire que "c'est un techno dépassée qui n'est jamais le bon choix pour un probleme donné"?
Je pense connaître suffisament pour porter un jugement de cet ordre oui, j'ai écrit sur Java dans programmez par exemple, j'ai aussi formé des gens sur les interractions php/java (et ca c'est très mal passé d'ailleurs)
J'apprécie moyennement ce que tu as dit:
c'est une question de stratégie pas de technologie
Sachant que chaque technologie a quand-même ses limites, et c'est pour cela qu'on a créé autant de technologies différentes.
Je suis désolé que tu l'apprécie moyennement, mais je n'ai pas l'habitude d'être consensuel dans mes avis, je dis ce que je pense, bien sur les technologies ont des limites mais la il s'agit de gens avec une appli php, déja codée et en place et des soucis de perf, tu ne leur conseille pas une autre technologie sans avoir creusé de façon vaste la question, et pour avoir déja creusé cette question il s'agit bel et bien d'un probleme de stratégie, dom et toutes les méthodes "une variable = 1 fichier" sont inadapté dans son cas indépendament du langage, pas la méthode sax de la libxml toujours indépendament du langage, alors pourquoi changer de langage?
En tout cas, je suis sûr que tu connais mieux le PHP que moi, je vais apprendre beaucoup de toi. Merci :)
C'est possible, je n'ai pas un caractère facile mais je connais et sait faire un tas de choses relatif au php et au web en général.
Fait du php depuis que ca existe ou presque :)

Eléphanteau du PHP | 31 Messages

15 avr. 2009, 15:16

Oui, et contre tous les herzatz de java comme dotnet, pour tout plein de raisons dont leur faibles ouvertures syntaxiques sur les autres langages (comme le C), leur lourdeur due au tout objet sans concession, et leur cas d'utilisation inadapté juste parceque les développeurs savaient en faire.

Je pense connaître suffisament pour porter un jugement de cet ordre oui, j'ai écrit sur Java dans programmez par exemple, j'ai aussi formé des gens sur les interractions php/java (et ca c'est très mal passé d'ailleurs)
Eh ben... à ton avis pourquoi tant de gens sont d'accord sur l'opinion disant que Java est plus approprié pour les traitements robustes mais pas PHP?

Mais pour le reste, je suis d'accord avec toi. Tant qu'on pense pouvoir résoudre le problème avec PHP, on peut laisser les autres technologies à côté.

ViPHP
ViPHP | 3300 Messages

15 avr. 2009, 16:15

Oui, et contre tous les herzatz de java comme dotnet, pour tout plein de raisons dont leur faibles ouvertures syntaxiques sur les autres langages (comme le C), leur lourdeur due au tout objet sans concession, et leur cas d'utilisation inadapté juste parceque les développeurs savaient en faire.

Je pense connaître suffisament pour porter un jugement de cet ordre oui, j'ai écrit sur Java dans programmez par exemple, j'ai aussi formé des gens sur les interractions php/java (et ca c'est très mal passé d'ailleurs)
Eh ben... à ton avis pourquoi tant de gens sont d'accord sur l'opinion disant que Java est plus approprié pour les traitements robustes mais pas PHP?

Mais pour le reste, je suis d'accord avec toi. Tant qu'on pense pouvoir résoudre le problème avec PHP, on peut laisser les autres technologies à côté.
A mon avis? les gens qui décident qu'ils soient dev ou non dev ne décident pas toujours pour la bonne raison, l'existant, et les compétences internes ne doivent pas être des critères de choix technologiques, de ce fait, même si 90% des gens font du java ca me convaincra pas pour autant que java est la technologie à adopter. Mes critères sont d'ordre technique pur, quand je fais une recommandation technologique je ne regarde pas seulement ce que je connais ou ce sur quoi je suis à l'aise, j'essaye de voir ce qui est le mieux pour le produit final.

De ce fait je pourrais recommander java à l'occasion, si il y'a un fort existant principalement, mais pour un produit qui part de 0 je n'ai jamais trouvé de raison valable de pencher vers Java ou dotnet.
Fait du php depuis que ca existe ou presque :)

Eléphanteau du PHP | 31 Messages

15 avr. 2009, 16:47

Je pense que pour la sélection de technologie, il n'y a pas beaucoup de différence pour un produit "qui part de 0" et un autre... "qui ne part pas de 0". L'important est de déterminer les besoins en fonction des posibilités techniques, et il faut choisir une technologie dès qu'on voit son avantage par rapport aux autres, non?

J'ai déjà vu des gens qui faisaient leur application de traitement linguistique ou de détection du plagiat... en PHP, puis après quelques temps ils ont fini par décider de refaire en Java.
Parce qu'il s'agit du traitement robuste, et il faut connaître les limites de PHP.

Bon, pour un petit programme qui traite des fichiers de 100Mo, on se contente de travailler avec PHP, mais est-ce que ce sera rentable si les données sont beaucoup plus riches? Je ne sais pas.

J'avoue que j'ai eu tort de parler de Java dans ce cas, parce qu'on "n'utilise pas le même couteau pour tuer un boeuf et une poule" :)

Eléphanteau du PHP | 11 Messages

15 avr. 2009, 16:58

bonjour,

Je suis parti effectivement sur sax de la libxml et je m'en sors pas trop mal. Je n'ai as encore testé sur un gros fichier mais à priori ça devrait le faire.
Le but est de mettre à jour une base par un flux XML....

En tout cas merci à tous