Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2030 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Empecher l'erreur lors du chargement du XML

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Empecher l'erreur lors du chargement du XML

n°1945092
toregua
Posté le 26-11-2009 à 19:29:55  profilanswer
 

Bonjour tout le monde,
 
Je suis en train de coder un petit script qui recupere des informations sur un xml stocké sur un serveur distant...
 
Le soucis c'est lorsque je charge le XML de cette manière :
 

Code :
  1. $xml = new SimpleXMLElement("http://www.xxx.com/adresse/du/xml.xml", NULL, TRUE);


 
Et bien il m'arrive d'avoir l'erreur suivante à cause d'un trop grand nombre de connecté en même temps:

Code :
  1. Warning: SimpleXMLElement::__construct(http://www.xxx.com/adresse/du/xml.xml) [simplexmlelement.--construct]: failed to open stream: HTTP request failed! HTTP/1.1 500 Internal Server Error in C:\Program Files\EasyPHP5.3.0\www\projet\ressources\xml.php on line 43
  2. Warning: SimpleXMLElement::__construct() [simplexmlelement.--construct]: I/O warning : failed to load external entity "http://www.xxx.com/adresse/du/xml.xml" in C:\Program Files\EasyPHP5.3.0\www\projet\ressources\xml.php on line 43
  3. Fatal error: Uncaught exception 'Exception' with message 'String could not be parsed as XML' in C:\Program Files\EasyPHP5.3.0\www\projet\ressources\xml.php:43 Stack trace: #0 C:\Program Files\EasyPHP5.3.0\www\projet\ressources\xmlr.php(43): SimpleXMLElement->__construct('http://www.xxx.com/adresse/du/xml.xml', 0, true) #1 {main} thrown in C:\Program Files\EasyPHP5.3.0\www\projet\ressources\xml.php on line 43


 
Comment est ce que je peux faire en sorte que le XML soit rechargé jusqu'à qu'il n'y ait pas d'erreur et continuer l'execution de mon script...
 
J'ai vraiment besoin de vous ! Merci d'avance :ccool:

mood
Publicité
Posté le 26-11-2009 à 19:29:55  profilanswer
 

n°1945376
Tirkyth
Posté le 27-11-2009 à 15:53:04  profilanswer
 

Tu es sûr que c'est à cause d'un trop grand nombre de connecté ?

 

Sinon tu peux passer par la fonction http://php.net/manual/fr/function. [...] d-file.php

 

Ca fait globalement la même chose que ce que tu veux, sauf que ça renvoit soit un SimpleXmlElement, soit false. Donc une boucle devrait arriver à ce que tu souhaites.

 

Par contre ça pue le risque de boucle infini ton truc.


Message édité par Tirkyth le 27-11-2009 à 15:53:19
n°1945865
toregua
Posté le 30-11-2009 à 13:38:31  profilanswer
 

Merci bcp pour cette réponse , c'est exactement ce qu'il me fallait ca marche niquel :)
 
Oui ca sent la boucle infini mais bon pas le choix :)
 
Oui c'est bien qu'il y a trop de monde qui consulte le xml en meme temps...

n°1945961
rufo
Pas me confondre avec Lycos!
Posté le 30-11-2009 à 16:46:30  profilanswer
 

ça serait pas une bonne idée de mettre le xml en BD ou de mettre un compteur du nb de personnes qui veulent lire ce xml et passé un nb, dupliquer le fichier (en gros, faire une mini gestion de charge)?


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°1946498
gatsu35
Blablaté par Harko
Posté le 02-12-2009 à 09:16:49  profilanswer
 

toregua, dans ton cas je suppose que ce XML, tu vas le chercher sur un serveur autre que le tiens, et ce XML tu le charges à chaque fois qu'un visiteur passe. C'est un peu dégueulasse comme façon de faire.
Tu pourrais pas le stocker sur ton site, et n'aller le mettre à jour que toutes les 30 minutes par exemple. Ca évitera une surcharge du serveur distant qui héberge le XML


---------------
Blablaté par Harko
n°1946583
toregua
Posté le 02-12-2009 à 12:52:20  profilanswer
 

Salut gatsu et rufo, effectivement je cherche une solution,
 
Le XML est mis à jour en temps réel sur le serveur distant et je souhaiterais avoir un script qui récupère les infos de ce XML en boucle en les stockants dans ma base de donnée. Donc j'ai corrigé mon code qui copie le XML sur mon serveur à moi dans un premier temps et qui fait le traitement ensuite.
 
En revanche mon script j'aimerais qu'il s'execute tout seul de son coté sans rien demander à personne en se relancant toutes les 5 minutes.
 
Quand l'utilisateur en a besoin les informations seront récupérer dans ma base de donnée qui sera mise à jour toutes les 5 minutes...
 
Comment puis je faire ca ?? Merci d'avance


Message édité par toregua le 02-12-2009 à 12:53:08
n°1946587
ccp6128
Syntax error
Posté le 02-12-2009 à 13:02:10  profilanswer
 

via un cron (serveur linux ou unix) ou une tâche planifiée (sous Windows).

n°1946593
gatsu35
Blablaté par Harko
Posté le 02-12-2009 à 13:19:27  profilanswer
 

quand tu dis mis à jour en temps réel ?
Je ne pense pas qu'il soit mis à jour toutes les 2 secondes :o
mais au moins toutes les 5 minutes je pense


---------------
Blablaté par Harko
n°1946711
toregua
Posté le 02-12-2009 à 17:46:45  profilanswer
 

Oui je pense que le xml est mis a jour toutes les minute en gros...
 
Je me suis penché du coté des crons je vais essayer ce soir mais ca me semble etre la solution :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Empecher l'erreur lors du chargement du XML

 

Sujets relatifs
empêcher saisie caractères accentués en PHPErreur mysql : corrupted double-linked list
Bug Visual Basic : impossible de voir la ligne de l'erreur[Résolu][PHP] lecture d'objet XML en php
Internet Explorer : erreur de syntaxe ligne 4Axis2 et parser XML
Erreur 1064 Mysql[résolu][PHP/XML] lecture de fichier XML en PHP
Temps de chargement des pagesPHP - authentification requise acces à un XML- htpasswd
Plus de sujets relatifs à : Empecher l'erreur lors du chargement du XML


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR