XML Datei überprüfen

MsvP@habdichliebhasi

Erfahrenes Mitglied
Hi zusammen,

ich habe ein Problem beim Auslesen einer XML Datei.

Und zwar spreche ich via SimpleXML die Arsenal XML-Datei von World of Warcraft an, um meine Gildenliste auszulesen und in eine Datenbank zu speichern.

Anscheinend ist die Anfrage der Datensätze aber begrenzt. Da ich bei zu häufigem Aufruf folgende Fehlermeldung bekomme:

Code:
Warning: file_get_contents(http://armory.wow-europe.com/character-sheet.xml?r=XXXXX&n=XXXXX) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 503 Service Temporarily Unavailable in /var/www/ud01_19/html/_tmpl/gilde_1.php on line 95
"Service Temporarily Unavailable" -> Durch diese Fehlermeldung gehe ich davon aus, dass das Dokument bei zu vielen Anfragen kurzzeitig gesperrt wird.

Jetzt würde ich gerne wissen, wie ich abfangen kann, ob die XML Daten erreichbar sind, oder nicht, um die Fehlermeldung abzufangen.

Mit file_exists geht es nicht, da er die Datei dann generell garnicht findet.
Wahrscheinlich, da die Datei durch die Variablen temporär erzeugt wird.

Meine Anfrage sieht folgendermaßen aus:
Code:
	$url = "http://armory.wow-europe.com/character-sheet.xml?$member";

	$xml = new SimpleXMLElement(file_get_contents($url));

Hat jemand eine Idee?

Gruß
Micha
 
Zuletzt bearbeitet:
Moin,


Probiers mal so ;)
(einfaches if-else, mit dem @ verhinderst du die Fehlermeldung, fertig :))
PHP:
<?php
$url = "http://armory.wow-europe.com/character-sheet.xml?$member[url]";

if($file=@file_get_contents($url) )
  {
    $xml = new SimpleXMLElement($file);
  }
else 
  {
    echo 'nix geht';
  }
?>
 
Guten Tag zusammen

Ich habe dasselbe Problem. Allerdings lese ich die XML Datei nicht mit PHP aus, sondern mit einem kleinen Java-Programm.
Es wird mit HttpUrlConnection eine Verbindung aufgebaut, die XML Datei ausgelesen und geparst. Funktioniert auch wunderbar, nur bei zuvielen Aufrufen hintereinander in einer While-Schleife gibt es Probleme, daß der Server den Zugriff verweigert.
Kann ich das Problem auch mit Java irgendwie umgehen?

Danke schonmal für die Hilfe
 
1. falsches Forum
2. bei Java dürfte wohl eine Exception geworfen werden also einfach ein try{..}catch{...} drum rum bauen und im catch eventuell ein Thread.sleep() für ein paar sekunden rein und nochmal probieren (oder alternativ halt abbrechen)
 
1. Es passte thematisch bezogen auf das Problem. Deswegen dachte ich mir frag ich mal. ;-)
2. Du hast natürlich vollkommen recht und ich hatte die Exception auch schon ausgewertet. Allerdings hatte ich dummerweise das thread.sleep() außerhalb der Exception. Dummer Fehler. Danke.
 
Zurück