Heim  >  Artikel  >  Backend-Entwicklung  >  Implementierungscode zur Verwendung von Curl, um festzustellen, ob eine Remote-Datei unter PHP vorhanden ist

Implementierungscode zur Verwendung von Curl, um festzustellen, ob eine Remote-Datei unter PHP vorhanden ist

高洛峰
高洛峰Original
2016-11-30 13:32:481373Durchsuche

Der Code lautet wie folgt:
//Entfernte Dateien beurteilen
function check_remote_file_exists($url)
{
$curl = curl_init($url);
//Nicht abrufen data
curl_setopt($curl, CURLOPT_NOBODY, true); nicht gesendet, es schlägt fehl
if ($result !== false) {
// Überprüfen Sie erneut, ob der http-Antwortcode 200 ist
$statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
if ($statusCode == 200) {
$found = true;}
}
curl_close($curl);

return $found;
Ich arbeite kürzlich an einer HTML5-Musik-Player-Website, die mein iPhone und iPad besser machen möchte. Das Frontend verwendet jplayer, ein Plug-in von jquery. Der Effekt ist ziemlich gut.
Der Hintergrund verwendet PHP, um regelmäßig Baidu MP3 zu sammeln. Da mein Serverplatz knapp ist, kann ich natürlich nur MP3-Adressen sammeln und die Dateien werden nicht lokal heruntergeladen. Wenn man bedenkt, dass sich der MP3-Pfad von Baidu oft ändert, ist das wirklich ärgerlich. Daher muss regelmäßig beurteilt werden, ob der MP3-Pfad noch korrekt ist. Daher gibt es einen weichen Artikel über PHP, der beurteilt, ob die Remote-Datei vorhanden ist. Ich habe angefangen, die Methode get_headers() zu verwenden, aber später habe ich gehört, dass es ein Effizienzproblem gibt, also habe ich diese Lösung nicht verwendet. Aber schauen wir uns übrigens die Wirkung der Funktion get_headers an:
Kopieren Der Code lautet wie folgt:
//Standardeffekt
print_r(get_headers("http://www.baidu.com/img/baidu_sylogo1.gif")); Array
(
[0] => HTTP/1.1 200 OK
[1] => Datum: Do, 02. Juni 2011 02:47:27 GMT
[2] => Server: Apache
[3] => P3P: CP=" OTI DSP COR IVA OUR IND COM "
[4] => 01.06.12 02:47:27 GMT; max- age=31536000; domain=.baidu.com; Letzte Änderung: Do, 20. Januar 2011 07:15:35 GMT
[6] => ETag: "65e-49a41e65933c0"
[7] => Accept-Ranges: Bytes
[8] =>
[9] => Cache-Control: max -age=315360000
[10] => Läuft ab: So, 30. Mai 2021 02:47:27 GMT
[11] => : Schließen
[12] => Content-Type : image/gif
)
//Die Auswirkung des Hinzufügens von Parameter 1
print_r(get_headers("http://www.baidu.com /img/baidu_sylogo1.gif", 1));
Ergebnis:
Array
(
[0] => HTTP/1.1 200 OK
[Datum] => Do, 02. Jun 2011 02:49:28 GMT
[Server] => Apache
[P3P] => CP=" OTI DSP COR IVA OUR IND COM "
[Set-Cookie] => 4D875812FC482C0ADE4F5C17068849EE:FG=1; läuft ab = Fr, 01. Juni 02:49:28 GMT; => Do, 20. Januar 2011 07:15:35 GMT
[ETag] => "65e-49a41e65933c0"
[Accept-Ranges] => Bytes
[Content-Length] => 1630
[Cache-Control] => max-age=315360000
[Expires] => So, 30. Mai 2021 02:49:28 GMT
[Connection] => Typ] => image/gif
)

Wie wäre es mit der Funktion get_headers, aber da es ein Problem mit der Effizienz gibt, müssen wir ihr keine Priorität geben Sehen Sie sich an, wie Curl ausgeführt wird. /Daten nicht abrufen
curl_setopt($curl, CURLOPT_NOBODY, true);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET'); //Wenn Sie dies nicht hinzufügen, wird 403 zurückgegeben Füge es hinzu, es werden die richtigen 200 zurückgegeben. Der Grund ist unbekannt
//Anfrage senden
$result = curl_exec($curl);
$found = false
// Wenn die Anfrage fehlgeschlagen ist gesendet werden
if ($result !== false)
{
// Überprüfen Sie erneut, ob der http-Antwortcode 200 ist
$statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE); if ($statusCode == 200)
{
$found = true;}
}
curl_close($curl) ;
return $found; >$exists = check_remote_file_exists('http://www.baidu.com/img/baidu_sylogo1.gif');
echo $exists : 'Existiert nicht'; 'http://www.baidu.com/test.jpg');
echo $exists : 'Existiert nicht';

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:PHP-Datei-Caching-FunktionNächster Artikel:PHP-Datei-Caching-Funktion