file_exists

chaosgoettin

Mitglied
Hallo,

ich möchte überprüfen ob es auf einem anderen Server (http://www....) das jeweilige Bild gibt.
Ich weiß das es mit file_exists nicht geht, aber auch das hier funktioniert nicht:

$url = $reisebild;
if(strstr($url, "http://")) $url = str_replace("http://", "", $url);

$fp = @fsockopen($url, 80);
if($fp === false) echo "error";
else echo "ja";

Was kann ich noch versuchen?
Danke
 
Bei fsockopen() wird lediglich der Hostname und eventuell der Port angegeben. Kein http:// oder aehnlicher String am Anfang, und auch nicht der komplette Pfad.
Der Pfad wird hinterher per HTTP uebergeben.

Um Deinen Test durchzufuehren koenntest Du die Methode head() meiner HTTP-Klasse nutzen.
 
naja es funktioniert, dauert aber ziemlich lange. Wenn man da 10 Bilder überprüft kostet das ganz schön Zeit. Gibt es noch nen schnelleren Weg?
 
nee ich hatte den letzten Eintrag zu spät gelesen. welche Funktion muss ich in deiner Klasse aufrufen? Muss aber eh erst mal die Klasse ins Symfony reinbekommen ...
 
Im Tutorial findest Du Beispiele zur Nutzung.
Fuer Dich duerfte wohl head() interessant sein, da Du ja nur wissen willst ob die Datei existiert, aber nicht den Inhalt haben willst.
HEAD hat halt gegenueber GET den Vorteil, dass dort keine vollstaendige Antwort vom Server kommt sondern lediglich der Header. Die Nutzdaten hingegen werden nicht ausgeliefert.
 
ich kapier es grad nicht. Eigentlich brauche ich an die funktion doch bloß die url übergeben? oder

echo httpconnection::head($bild_url);
er geht auch in die function rein aber es kommt kein Ergebnis?
 
Naja, nicht ganz, denn der Funktion wird nur der Pfad uebergeben. Der Hostname und eventuell der Port werden bei der Instanziierung uebergeben.

Hier mal ein kleines Beispiel:
PHP:
$http=new httpconnection("www.irgendeinlustigername.de");
$data=$http->head('meinlustigesbild.jpg');
if ($data['head']['code']==200)
{
 echo 'Bild ist da';
}
else
{
 echo 'Bild ist nicht da';
}
 
Zurück