begin process at 2012 05 30 17:15:40
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Base de données

 > 

Autre

 > 

Parser un flux XML toutes les x Heures


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Parser un flux XML toutes les x Heures

vendredi 15 juillet 2011 à 15:45:23 | Parser un flux XML toutes les x Heures

anthony428

Bonjour,
Je me lance dans le XML, et j'utilise des fichiers XML différents pour traiter des listes d'informations.
Mes fichiers pèsent près de 800ko mais je trouve les temps de traitement très long, trop long pour moi en fait, parfois, ma page met près de 10 secondes à s'afficher.

J'ai chercher un peu partout.....
il y aurait plusieurs solutions, soit je met le tout dans un BDD et j'actualise de temps en temps, soit je garde la méthode du XML mais je l'actualise de temps en temps.

Ma question est de savoir si vous pouvez me dire comment il faut faire pour conserver les fichiers XML mais les actualiser de temps en temps.

J'utilise une requête pour charger mes fichiers XML à partir d'une BDD distante sur laquelle je n'ai pas la main, l'ennui c'est que chaque fois qu'un internaute se connecte, il charge tout le xml à chaque fois ?! non ?

Pouvez vous me donner des pistes...je ne sais pas comment je peux faire pour développer tout ça.
Peut on garder en mémoire sur le serveur le fichier XML et accéder à ce fichier plutôt que de le charger à chaque fois de puis cette BDD ?
Existe t'il des scripts permettant de mettre à jour ce fichier XML toutes les x heures ou minutes ?

Merci de m'aider si vous avez des pistes car là je sèche un peu.

Merci d'avance
vendredi 15 juillet 2011 à 16:29:45 | Re : Parser un flux XML toutes les x Heures

stay

Tu dois avoir un serveur dédié et non mutualisé pour faire cela.
Car ce n'est pas le client qui doit exécuter l'application, mais le serveur.
Par la suite, tu crées un cron, un fichier PHP à exécuter.

Bonne chance.
vendredi 15 juillet 2011 à 18:40:42 | Re : Parser un flux XML toutes les x Heures

anthony428

Je te remercie pour ta réponse mais il est peut être possible de trouver une solution pour contourner ce problème...
Peut être que je peux enregistrer mon flux dans un fichier XML que je garde sur mon serveur, ça c'est possible.
Le seul problème est de savoir comment le mettre à jour de manière automatique ???
D'autres idées pour me faire avancer la dessus ?

Il n'y a aucun script qui permette de faire ces mises à jour ?

Ou une tout autre solution ????

Merci d'avance
samedi 16 juillet 2011 à 10:03:29 | Re : Parser un flux XML toutes les x Heures

stay


La bonne solution, c'est le cron.
Comme tu veux éliminer cette solution, mais c'est bidouillé et pas pro.

Tu peux créer une page protégée par un htaccess.
Une fois connecté, un script JavaScript asynchrone lance le script PHP, par exemple toute les 10 min.
Et bien sur, ce poste client doit resté ouvert 24h sur 24.
dimanche 17 juillet 2011 à 18:56:10 | Re : Parser un flux XML toutes les x Heures

syndrael

Il reste à savoir si c'est le temps d'accès et de rapratriement de ton fichier qui est long ou le traitement XML (parsing etc..)
Après il y a aussi la méthode que tu utilises pour interroger ton fichier. XPath ?? SimpleXML ??
Les raisons d'un tel temps sont multiples mais pas très nombreuses.
S.
lundi 18 juillet 2011 à 15:32:17 | Re : Parser un flux XML toutes les x Heures

Romano58


Surtout, attention au hébergeur... Qui mettent eux même du temps à répondre, quand ils ne sont pas H.S (je pense au gratuits, par expérience). Car théoriquement, télécharger un fichier via un script php héberger sur un serveur, c'est passer par les gros "tuyaux" (de serveur à serveur), donc 800k c'est une broutille insignifiante (Dans mon travail, je traite des flux xml qui font jusqu'a 2 Giga!!).

Le traitement du flux, en effet, c'est peut être ça qui demande du temps. Boucler sur plusieurs centaines (milliers?) de noeud cela peux prendre beaucoup plus de temps, surtout en fonction des traitements effectué pendant cette boucle.

Romain
lundi 18 juillet 2011 à 15:35:57 | Re : Parser un flux XML toutes les x Heures

inwebo

Bonjour,

Et pourquoi ne pas mettre en cache le fichier xml, avec une date d'expiration ? De la même manière que l'on mettrait des script PHP en cache au format HTML.




________________________________________
( $toBe || !$toBe ) = $this->Question();
lundi 18 juillet 2011 à 22:38:59 | Re : Parser un flux XML toutes les x Heures

anthony428

Bonjour à tous et merci pour vos pistes de réflexions.

merci stay pour ta solution, je pense en effet que le cron serait la solution la plus appropriée, même si je n'ai jamais eu à la mettre en place, de ce que j'ai lu, cela semble être la meilleure solution mais le problème est qu'il faut obligatoirement passer sur un serveur dédié et je ne peux pas le faire pour le moment...
Quant à la solution du poste client qui exécute le script, je pense que cela sera contraignant pour les utilisateurs et cela me posera également des soucis.

Peut être que je dois prendre le problème autrement, puisque mon fichier XML n'est pas si lourd que cela, je dois savoir pourquoi il est si long à s'afficher sur mon site et je voudrais bien que vous m'aidiez à éclaircir le problème s'il vous plait, étant novice en XML, je ne saurais pas isoler le problème seul.

Je ne suis pas sur un Hébergement gratuit mais sur une solution proposée par OVH avec BDD.
J'utilise la méthode SimpleXML pour traiter mon flux XML, comment puis je optimiser mes temps de traitement et savoir si la lenteur d'éxécution vient bien de là ?

L'idée d'inxebo me plait assez, mettre un fichier en cache avec une date d'expiration à 24H et recharger le fichier en cache au bout de 24H, cela est il facile à réaliser ? est ce fiable ?
Merci de m'aider sur ce sujet, toute réflexion est bonne à prendre et me permettra d'en apprendre un peut plus sur le traitement des flux XML.

Merci encore
lundi 18 juillet 2011 à 23:32:55 | Re : Parser un flux XML toutes les x Heures

kohntark

Membre Club
Salut,


Les xml sont stockés dans une DB distante, c'est bien ça ?

mais le problème est qu'il faut obligatoirement passer sur un serveur dédié


Heu, tu es sûr de toi là ? Chez OVH j'aurai eu tendance à dire qu'un planificateur de tâches existait.

Il serait bien de connaitre un peu le contenu des données que tu récupères et en quoi consiste le traitement. Changent elles souvent ? Est ce important si tu envoies des données non actualisées au client ? As tu un moyen alternatif de savoir si elles ont changées ? Du style un champ id dans la DB distante que tu pourrais interroger via un simple SELECT, tite comparaison avec valeur précédente => mise à jour , ... ou non

Avant de mettre en place le moindre truc c'est clair qu'il faut identifier d'où viennent les ralentissements.

800Ko c'est le poids de tous les XML réunis ?
... s'il s'agit de générer la page web avec ça je trouve que c'est déjà très lourd; quelques images en plus, un peu de JS, le HTML qui peut être plus conséquent que le xml ... on a vite fait de se retrouver avec une page bien trop lourde.

cela est il facile à réaliser ?


Oui, suffit juste d'enregistrer le(s) fichier(s) et tester sa date de modification à chaque connexion. Si date_modif < maintenant - 24h => on utilise ce fichier, sinon on interroge le serveur distant pour mise à jour

est ce fiable ?


... c'est juste un fichier :)
La fiabilité réside ici dans l'exigence que tu as de fournir des données à jour ou non.


savoir si la lenteur d'éxécution vient bien de là ?


Tu peux mettre des mouchards de ce type un peu partout dans le code :

Code PHP :
<?php
define('START_TIME', microtime(true));
//[code]
echo round(microtime(true)-START_TIME, 4).' sec';
//[code]
echo round(microtime(true)-START_TIME, 4).' sec';
//etc..
?>



Cordialement,

Kohntark -
mardi 19 juillet 2011 à 10:40:07 | Re : Parser un flux XML toutes les x Heures

anthony428

Merci kohntark,
tu m'as permis d'avancer un peu plus.
En effet, j'utilise un BDD distante et j'ai bien la possibilité d&#8217;exécuter un CRON, chose que je ne connaissais pas mais en regardant de plus prêt, je vois que mon hébergeur le propose. Je ne sais pas encore quel genre de script je peux créer mais je vais chercher un peu plus.

Mon site est un site qui véhicule des informations touristiques et il serait bien qu'il soit mis à jour au moins une fois toutes les 24h. Mes données sont composées de photos et de textes. Par exemple la liste des manifestations du secteur, une photo et une description ainsi que des informations complémentaires de géolocalisation...

Pour vérifier s'il y a eu modification ou non ?
Non je n'ai pas d'ID que je puisse interroger, je pensais faire un remplacement intégral des données de manière automatique toutes les 24H. ça c'est possible ?

Pour le script que tu m'as donné, je l'ai mis en place et il apparait que le dernier de mes enregistrements apparait en 2 secondes mais parfois c'est beaucoup plus long....donc c'est assez aléatoire ?!

Jusque là, j'interrogeais ma BDD distante, je mettais le contenu dans un fichier XML et je le parsais pour un affichage sur mon site avec une requête pour chaque connexion...
L'idéale serait de faire un enregistrement de du résultat de ma requête dans un fichier xml que je stocke sur mon serveur et que je remplace une fois toutes les 24H grace à un script contenu dans un fichier que j'exécute grâce à un CRON ? c'est bien la bonne démarche ? désolé, je débute dans ce mode de programmation, ce sera ma première fois

J'ai déjà regardé du côté de l'enregistrement de mon fichier XML et j'éprouve déjà des soucis. N'y a t'il pas de fonction prédéfinis PHP pour cela ? en concernant la structure initiale de mon arborescence XML ?

Merci d'avance

1 2

Cette discussion est classée dans : temps, fichiers, bdd, xml, heures


Répondre à ce message

Sujets en rapport avec ce message

acces par bdd ou par fichiers ? [ par Urukai1 ] Je me pose cette question,pour faire un site multilangue, vaut-il mieux utiliser plusieurs fichiers contentant les mots traduits avec les valeurs corr XML ?? Question existentielle [ par satellite34 ] Bonjour,je fais partie du staff d'un site completement basé sur une bdd (cf ma signature), Notre webmaster a tout codé en php : requetes ds la bdd, af Comment récupérer une bdd dans un fichier xml ? [ par satellite34 ] Bonjour,je me lance dans le développement d'une application ( c++ (ne fuyez pas!!!!!) ), lié a un site;je m'explique :ce serait une apli de gestion de temps restant entre deux heures [ par mierkool ] Bonjour,J'aimerai savoir comment faire simplement pour connaitre le temps restant entre deux heures.par exemple :entre 18:00:00 et 15:32:56 ?merci afficher les fichiers xml par ordre alphabetique [ par superM ] bonjour à tous,J'ai un petit script qui me permet de lister des fichiers xml dans un répertoire qui marche trés bien. Le seul problème que je rencontr gerer une BDD MySQL avec des fichiers .txt [ par pth_ezekiel ] Bonjour à tous.Je suis débutant en php, et je dois fournir, pour l'école, un projet d'intranet.Pour une exportabilité maximale, nous avons décidé de n Probleme BDD fichiers .MYD et .MYI [ par doudoutinette ] Bonjour, J'ai un "petit" probleme de base de bonnées Mysql . Voila j'avais wamp5 1.7 je l'ai supprimé et ai installé wampserver2. les fichier php on é XML & BDD : Réferencement [ par Orange73 ] Hello,juste 2 ptites question :> Est-ce que les moteurs de recherche référencent les xml loader dans du flash ?> Est-ce que les moteurs de recherche r multiplier et insérer dans un bdd mysql [ par sampiero ] Je bute sur une requête sql qui me permet dans un premier temps de faire une multiplication entre deux champs en créant un champ résultat. dans un de creation d'une playlist.xml à partir d'un script PHP depuis la BDD [ par tex73 ] bonjour à tous. pourriez vous s'il vous plait m'apporter votre aide pour la creation d'un fichier XML sur ce projet, qui consiste à selectionner dans


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,682 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales