Heim > Artikel > Backend-Entwicklung > Implementierungscode zur Verwendung von Curl, um festzustellen, ob eine Remote-Datei unter PHP vorhanden ist
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';