Empecher l'erreur lors du chargement du XML

Empecher l'erreur lors du chargement du XML - PHP - Programmation

Marsh Posté le 26-11-2009 à 19:29:55    

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:

Reply

Marsh Posté le 26-11-2009 à 19:29:55   

Reply

Marsh Posté le 27-11-2009 à 15:53:04    

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
Reply

Marsh Posté le 30-11-2009 à 13:38:31    

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...

Reply

Marsh Posté le 30-11-2009 à 16:46:30    

ç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
Reply

Marsh Posté le 02-12-2009 à 09:16:49    

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
Reply

Marsh Posté le 02-12-2009 à 12:52:20    

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
Reply

Marsh Posté le 02-12-2009 à 13:02:10    

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

Reply

Marsh Posté le 02-12-2009 à 13:19:27    

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
Reply

Marsh Posté le 02-12-2009 à 17:46:45    

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 :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed