xslt et php - PHP - Programmation
Marsh Posté le 19-01-2009 à 22:34:33
Tu peux stocker un objet DOM dans tes sessions, suffi de le sérialiser ... Question : Pourquoi reloader ton fichier .xml à chaque page pour après le transformer avec XSL ?
Marsh Posté le 20-01-2009 à 08:42:01
manu0000 a écrit : Je voulais utiliser la lib xslt de php4 qui permet de faire la requete sur des fichiers xml et non des domxml |
Nan, le fichier sera quand-même parsé. C'est juste la syntaxe qui était un peu plus légère. Mais qui dis transfo XSLT dit parsing obligatoire, ça ne change rien.
C'est un des inconvénients de DOM & XSL, ça n'est pas super-adapté pour les gros fichiers, surtout dans un environnement web où les pages doivent être débitées rapidement. Pour du desktop pas de probs, on mettera une barre de progression...
Donc comme l'a proposé esox, est-ce que le résultat change à chaque requête ? Si ce n'est pas le cas, autant mettre en cache (en session, ou sur le disque) pour ne calculer qu'une seul fois...
Marsh Posté le 23-01-2009 à 18:20:23
merci pour vos reponses
@esox_ch : on peut pas stocker des ressources dans les variables de session or le dom est une ressource php
@florentG : ok merci, c'est bien ce qui me semblait, c tout pourri pour les gros fichiers
par contre :
- oui le resultat change à chaque fois parce que c'est le resultat d'une requete (la chaine xslt est reconstruite à chaque fois et est differente à chaque fois que la page est loadée à priori)
- ce que je veux mettre en cache n'est pas le resultat mais la bdd xml
du coup, je cherche une extension xquery
ai trouvé zorba mais pas les bin pour win32...
a+
Marsh Posté le 23-01-2009 à 18:34:52
manu0000 a écrit : merci pour vos reponses |
non, ce n'est pas une ressource mais un objet, et on peut parfaitement passer un objet dans une variable de session.
Marsh Posté le 23-01-2009 à 18:55:12
Correction : l'équivalent sérialisé de l'objet.
On ne peut pas mettre l'objet en lui même dans la session.
Marsh Posté le 23-01-2009 à 19:12:12
ben c'est listé comme ressource
http://www.php.net/manual/fr/resource.php
et moi j'arrive pas à le recuperer via var de session
Marsh Posté le 23-01-2009 à 19:17:08
je pense qu'il s'agit de la version procédurale de domxml qui elle utilise les ressources, mais si tu as PHP 5 je doute que tu utilises cette version, mais si c'est le cas, passe à la version objet.
Marsh Posté le 23-01-2009 à 19:29:47
en fait c'est dom et pas domxml, sorry !
neanmois j'arrive bien à passer des scalaires mais pas des dom via les var de sessions
y a t-il une manip speciale à faire svp?
merci !
Marsh Posté le 23-01-2009 à 19:29:55
alors çà passe sans problème avec les sessions
EDIT :
Est ce que tu sérialises ?
Code :
|
Marsh Posté le 23-01-2009 à 19:33:02
j'avais vu ça là :
http://forum.hardware.fr/hfr/Progr [...] 2459_1.htm
Marsh Posté le 23-01-2009 à 19:33:52
non je serialise pas, je pensais que php 5 faisait ça tout seul
je vais essayer
Marsh Posté le 23-01-2009 à 19:45:49
j'ai essayé mais marche pas,
c'est expliqué là
http://bugs.php.net/bug.php?id=30321
Marsh Posté le 23-01-2009 à 19:48:27
ah dommage
Petite question : pourquoi dois-tu manipuler un XML de plusieurs Mo ?
Marsh Posté le 23-01-2009 à 19:50:20
et la solution là
http://osdir.com/answers/php/4506- [...] bject.html
(il faut utiliser saveXML et loadXML)
merci à tous !!
Marsh Posté le 23-01-2009 à 19:51:29
parce que je recupere ma base de donnée au format xml (de pls mo), et j'avais envie de faire des requetes dessus via xslt sans passer par mysql
Marsh Posté le 23-01-2009 à 19:52:13
tu peux aussi utiliser SAX qui possède un mode de lecture séquentiel, plus performant sur les gros fichiers Ca peut être intéressant
Marsh Posté le 19-01-2009 à 20:08:11
bjr,
j'utilise php5 et j'ai un souci avec xsl.
J'ai un fichier xml assez gros de plusieurs mega et je veux faire une requete dessus et afficher via XSLT.
La nouvelle lib XSL de PHP5 ne prend en entrée que des DOMXML et plus des fichiers. Donc je suis obligé de faire un
$doc->load('monfichier.xml')
qui est très long. Et je dois le faire à chaque fois que la page s'ouvre puisqu'on ne peut pas passer un DOM dans les variables de sessions.
Je voulais utiliser la lib xslt de php4 qui permet de faire la requete sur des fichiers xml et non des domxml mais c'est plus dispo en php5 et j'arrive pas à l'installer. On m'a dit que c'est parce que php5 ne supporte plus sablotron...
Une idée pour m'aider?
merci !!!