Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > XML > SimpleXML
SimpleXML Forum d'entraide pour l'extension SimpleXML, qui permet de manipuler des documents XML en PHP (approche DOM).
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/10/2007, 11h07   #1
Invité de passage
 
Inscription : octobre 2007
Messages : 4
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 4
Points : 1
Points : 1
Par défaut [SimpleXML] Chargement d'XML externe à mon serveur (timeout)

Bonjour à tous,

Voilà deux jours que je tente de résoudre mon problème et j'ai cherché mais rien de vraiment très concret:

J'utilise la fonction de simpleXML -> simplexml_load_file() pour aller chercher mon XML sur le serveur distant. Là, tout est bon... Mais des fois le temps d'exécution (timeout) est dépassé parce qu'elle n'arrive pas à se connecter au serveur distant... J'aimerais qu'au bout de 2-3 secondes la fonction passe avec un message d'erreur et le reste du site s'affiche mais pas au bout de 30 secondes comme le timeout est prédéfini.

Avec les sockets ou Curl mais avec simpleXML? Enfin un énorme trou noir pour ma part...

Merci beaucoup et bonne journée
Artibani est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/10/2007, 13h29   #2
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Théoriquement cela devrait être possible en créant un nouveau contexte et en jouant sur l'option timeout mais une version 5.2.1 (ou supérieure) de PHP vous sera requise :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
$contexte = stream_context_create(
    array(
        'http' => array(
            'timeout' => 3
        )
    )
);
libxml_set_streams_context($contexte);
// SimpleXML
$sxml = simplexml_load_file('http://login:motDePasse@www.monsite.fr/public/flux.xml');
# Ou
$sxml = new SimpleXMLElement('http://login:motDePasse@www.monsite.fr/public/flux.xml', 0, TRUE);
(Requiert que PHP sache gérer les flux HTTP(S) et que allow_url_fopen est à On)

Sinon oui, il est possible de procéder moins directement en récupérant d'abord sous la forme d'une chaîne le contenu de ce document (avec cURL ou autres) puis de la parser (via simplexml_load_string ou la forme équivalente du constructeur).
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/10/2007, 13h47   #3
Invité de passage
 
Inscription : octobre 2007
Messages : 4
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 4
Points : 1
Points : 1
Okay j'ai regardé et essayé, c'est tout bon...

Merci beaucoup !

Meilleures salutations.
Artibani est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h19.


 
 
 
 
Partenaires

Hébergement Web