PHP fait n'importe quoi avec les XML dès qu'ils dépassent 200 ko ? - PHP - Programmation
Marsh Posté le 20-07-2005 à 17:54:20
J'ai jamais utilisé DOM/XML donc supposition au pif : le
Code :
|
devrait pas se trouver à la fin de ton script, avant le save ?
Ca dépend si le truc marche avec des références ou pas en fait.
Marsh Posté le 20-07-2005 à 17:57:26
si je peux me permettre une question, pourquoi stoker ce genre dinformations dans un fichier xml ?
Pourquoi ne pas utiliser la base de données de free ?
On sait qu'au moins mysql a fait ses preuves
Marsh Posté le 20-07-2005 à 19:08:50
sielfried a écrit : J'ai jamais utilisé DOM/XML donc supposition au pif : le
devrait pas se trouver à la fin de ton script, avant le save ? |
oui je crois bien que ça marche par référence
sinon le php déconnerait dès le début et pas seulement à partir d'une certaine taille.
Marsh Posté le 20-07-2005 à 19:11:35
fluminis a écrit : si je peux me permettre une question, pourquoi stoker ce genre dinformations dans un fichier xml ? |
XML est beaucoup plus simple pour afficher le résultat, car j'ai juste à aller à l'adresse http://serveur/log.xml et le XSL (de 2 ko) fait tout le boulot de présentation sous forme de tableau.
Marsh Posté le 20-07-2005 à 19:21:27
c'est toi qui a raison, le XSL est puissant, j'ai du mal a m'habituer au Xml
pour moi il y a telement de caracteres inutiles <...> et </...> que je trouve une bdd bcp plus interessante. Surtout que des logs comme cela, ce qui peut etre interessant c'est de faire un traitement dessus (genre combien de personnes sont venue sur une page particuliere, combien entre telle et telle heure)
Amuse toi bien avec ton xml et ton xsl
Marsh Posté le 20-07-2005 à 21:13:36
fluminis a écrit : c'est toi qui a raison, le XSL est puissant, j'ai du mal a m'habituer au Xml |
Non en fait je suis d'accord avec toi, j'ai toujours stocké en bdd et ceci est mon premier essai de stockage XML. Comme tu as pu le voir c'est un échec cuisant... je m'attendais à ce que ça rame un peu lorsque le fichier ferait 5 ou 6 Mo, mais de là à tout mélanger dès 200 ko
Si ça t'intéresse voilà à quoi ressemble le XSL :
Code :
|
bon ok, ça vaut pas un traitement par PHP et la syntaxe est lourde
Marsh Posté le 20-07-2005 à 23:21:27
Chase a écrit : Et figurez-vous qu'au bout de quelques centaines de Ko (variable sur plusieurs essais, mais ça tourne entre 200 et 300 ko), le XML ne ressemble plus à rien, il devient syntaxiquement invalide ! Regardez : |
même problème et pour la même utilisation.
Mais dans mes données, je stocke le referer du visiteur, et je me suis demandé si c'était pas un caractère qui foutait la merde...
Je me suis pas trop penché sur le problème car..
...bah, mon site marche quand même sans : je perd quelque stat, c'est tout.
...j'arrive pas à reproduire le problème moi même
...j'ai pas dans mes priorités pour l'instant
Donc tu n'es pas seul face à ce problème
Exemple de problème qui j'ai eux dans le fichier XML :
Code :
|
(sachant que liste_visite est l'élement racine...et qu'on ne peut avoir qu'un seul élement racine par document XML)
Code :
|
Ici, il y a encore 2 élements racines qui se ferment, et la dernière balise est mal fermée.
Mes fichiers en erreur font :
101Ko, 47Ko, 41Ko.
J'ai des fichiers sans eurreurs a plus de 80Ko
(donc, dans mon cas, je ne suis pas sûr que le problème vienne de la taille du fichier)
Il est à noté que je suis encore sur php4 + domXML (qui n'est pas génial sur le php4...)
Je n'ai pas encore essayé avec simpleXml de php5.
...et j'ai pas essayé non plus avec la base de données embarqué de php (y'en a bien une, je crois, non ?) non plus
Marsh Posté le 21-07-2005 à 00:25:16
Le problème a disparu en supprimant le referer ? ou bien j'ai mal compris ?
Parce que moi aussi j'enregistre le referer (mais je l'ai enlevé ici pour que ça soit plus lisible).
Pour ton doute sur les caractères spéciaux, tu as essayé en faisant htmlspecialchars() ?
On va trouver une solution
Marsh Posté le 21-07-2005 à 09:08:11
Chase a écrit : Le problème a disparu en supprimant le referer ? ou bien j'ai mal compris ? |
bah non, j'ai pas résolu, car j'ai pas essayé de résoudre le problème
et oui, j'espère bien qu'on va trouvé une solution !
et non, j'ai pas essayé sans le referer, ni avec htmlspecialchars
Marsh Posté le 21-07-2005 à 10:46:51
N'oubliez pas qu'il n'y a pas besoin de faire un htmlspecialchars, du moins sous DOMXML en PHP4 : c'est fait automatiquement
Marsh Posté le 21-07-2005 à 10:51:11
Après vérif, sous DOM en PHP5, il faut le htmlspecialchars si on met une string dans createElement. Par contre si on fait comme ça :
$node_date = $dom->createElement('date'); |
Là le specialchars est fait tout seul
Marsh Posté le 21-07-2005 à 11:08:08
Bon alors j'ai testé un peu tout ça (PHP5 aussi) et aucun problème, même après 200Ko, le fichier est propre.
Sinon pour un affichage propre il faut rajouter
Code :
|
.
Marsh Posté le 20-07-2005 à 17:42:32
Bonjour
Voici la structure de mon XML :
Et le but du fichier PHP est d'insérer une nouvelle entrée "visite" à la suite des autres, avec tous les bons renseignements, à chaque exécution du php. J'utilise PHP 5 et DOM. Voici la source :
Alors d'abord, le fichier n'est pas bien formaté avec les tabulations, tout est écrit à la suite, malgré la ligne $dom->formatOutput = true;. Comment faire ?
Et figurez-vous qu'au bout de quelques centaines de Ko (variable sur plusieurs essais, mais ça tourne entre 200 et 300 ko), le XML ne ressemble plus à rien, il devient syntaxiquement invalide ! Regardez :
Voilà !
Vous avez une idée ?
ça vient de DOM qui n'est pas encore au point ? du serveur (free) ? d'une connerie de ma part ?
Merci d'avance
Message édité par Chase le 20-07-2005 à 17:46:08