Php si erreur recommence
Résolu
Cokin
-
Cokin -
Cokin -
Bonjour,
J'utilise simplexml pour parser des fichiers xml
ça fonctionne bien, mais parfois il y a trop de connections simultanées et cela génère une erreur.
Je voudrais pouvoir faire une boucle en cas d'erreur :
(si erreur, recommence, sinon continue)
voila mon code
function xml_attribute($object, $attribute)
{
if(isset($object[$attribute]))
return (string) $object[$attribute];
}
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL,"http://.......variable.xml");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$contenu = curl_exec($curl);
$xml = new SimpleXMLElement($contenu); //<= l'erreur est à cette ligne
...
Merci pour votre aide.
J'utilise simplexml pour parser des fichiers xml
ça fonctionne bien, mais parfois il y a trop de connections simultanées et cela génère une erreur.
Je voudrais pouvoir faire une boucle en cas d'erreur :
(si erreur, recommence, sinon continue)
voila mon code
function xml_attribute($object, $attribute)
{
if(isset($object[$attribute]))
return (string) $object[$attribute];
}
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL,"http://.......variable.xml");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$contenu = curl_exec($curl);
$xml = new SimpleXMLElement($contenu); //<= l'erreur est à cette ligne
...
Merci pour votre aide.
5 réponses
-
Je pense avoir trouvé une solution mais ce n'est pas élégant
j'utilise simplexml_load_string et vérifie plusieurs fois si c'est bon (2 fois dans cet exemple)
Pensez vous que ce code fonctionne (je ne peux pas simuler l'erreur)
// @ permet de ne pas afficher l'erreur
$xml = @simplexml_load_string($contenu);
// ! est en erreur
if(!$xml)
$xml = @simplexml_load_string($contenu);
else
if(!$xml)
$xml = @simplexml_load_string($contenu);
else
.... -
et comme ça ?
//étiquette erreur pour le goto
erreur:
// @ permet de ne pas afficher l'erreur
$xml = @simplexml_load_string($contenu);
// ! est en erreur
if(!$xml)
goto erreur;
else -
Oui, en plaçant un flag tant que ton programme fonctionne .Du genre
$flag = true while($flag == true){ $xml = new SimpleXMLElement($contenu); //<= l'erreur est à cette ligne if($xml){ $flag = false; } }
En quelques sortes, je te traduit:
TANTQUE flag = vrai $xml = new SimpleXMLElement($contenu); SI$xml est rempli flag = faux FINSI FINTANTQUE
En clair, tu répète ta boucle jusqu'a que ta variable $xml ai fonctionné =)
-
Merci pour ta réponse, j'ai malheureusement une erreur
Parse error: syntax error, unexpected T_WHILE
la solution que j'évoque au dessus ne fonctionne pas car ma Version PHP est la 5.2.17 est n'est valable qu'à partir de 5.3. -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
je suis passé à php 5.4.4, ma solution fonctionne ;-)
j'ai toujours une erreur de syntaxe avec la tienne .
Merci quand même @+