Hallo
Ich habe bei mir 2 LBS im Einsatz, welche eine Datei über einen URL-Pfad öffnen. Leider kommt es vor, dass diese URL (bzw. der entfernte Webserver) ab und zu offline ist oder sonstwie keine Antwort gibt.
Normalerweise würde man ja mit einem fileexists prüfen, ob eine Datei vorhanden ist, bevor man sie öffnet. Bei einem URL-Pfad geht bekanntlich fileexists nicht.
Ich habe mir nun folgende Prüfung eingebaut:
Problem ist, dass der Check offenbar nicht richtig greift. Schon beim get_headers Aufruf wird im Edomi Log der folgende Fehler geschrieben. (Und später dann noch beim file_get_contents).
Da dieser LBS alle paar Minuten läuft, erzeuge ich da natürlich schnell sehr viele Fehler Log Einträge. (Und seit Edomi dies ja in der Visu anzeigt, nervt es stark.)
Wie kann ich eine URL prüfen, ob sie online ist, ohne schon bei der Prüfung einen PHP-Fehler zu erzeugen?
Ich habe bei mir 2 LBS im Einsatz, welche eine Datei über einen URL-Pfad öffnen. Leider kommt es vor, dass diese URL (bzw. der entfernte Webserver) ab und zu offline ist oder sonstwie keine Antwort gibt.
Normalerweise würde man ja mit einem fileexists prüfen, ob eine Datei vorhanden ist, bevor man sie öffnet. Bei einem URL-Pfad geht bekanntlich fileexists nicht.
Ich habe mir nun folgende Prüfung eingebaut:
PHP-Code:
// Prüfen, ob URL-Pfad gefunden wird. Sonst wird LBS abgebrochen.
$file_headers = @get_headers($url);
if (stripos($file_headers[0],"404 Not Found") >0 || (stripos($file_headers[0], "302 Found") > 0 && stripos($file_headers[7],"404 Not Found") > 0)) {
if ($debug==1) {writeToTraceLog(0,true,"URL Pfad nicht gefunden!");}
$error=1;
setLogicLinkAusgang($id,6,$EdomiTime); //Timestamp Edomi
setLogicLinkAusgang($id,7,$error); //Error = true
setLogicElementStatus($id,0);
sql_disconnect();
exit();
}
Problem ist, dass der Check offenbar nicht richtig greift. Schon beim get_headers Aufruf wird im Edomi Log der folgende Fehler geschrieben. (Und später dann noch beim file_get_contents).
Code:
get_headers(http://xxxx): failed to open stream: No route to host file_get_contents(http://xxxx): failed to open stream: No route to host
Wie kann ich eine URL prüfen, ob sie online ist, ohne schon bei der Prüfung einen PHP-Fehler zu erzeugen?
Kommentar