コードは次のとおりです:
//リモートファイルを決定します
function check_remote_file_exists($url)
{
$curl =curl_init($url)
//データを取得しません
curl_setopt($curl, CURLOPT_NOBODY, true) ;
// リクエストを送信する
$result =curl_exec($curl);
$found = false;
// リクエストが送信されずに失敗した場合
if ($result !== false) {
// http 応答コードが 200 かどうか
$ statusCode =curl_getinfo($curl, CURLINFO_HTTP_CODE);
if ($statusCode == 200) {
}
}
curl_close($curl);見つけました;
}
最近取り組んでいる HTML5 音楽再生用の Web サイトです。フロントエンドは jquery のプラグインである jplayer を使用しています。
バックグラウンドでは PHP を使用して Baidu MP3 を定期的に収集します。 サーバーのスペースが狭いことを考慮すると、もちろん MP3 アドレスしか収集できず、ファイルはローカルにダウンロードされません。 Baidu MP3 パスが頻繁に変更されることを考えると、非常に面倒なので、MP3 パスがまだ正しいかどうかを定期的に判断する必要があるため、リモート ファイルが存在するかどうかを判断する PHP に関するソフト記事があります。 get_headers() メソッドを使い始めましたが、後で効率の問題があると聞いたので、この解決策は使用しませんでした。ところで、get_headers 関数の効果を見てみましょう:
コードをコピーします。コードは次のとおりです。
//デフォルト効果
print_r( get_headers("http://www.baidu.com/img/baidu_sylogo1.gif"));
結果:
配列
(
[0] => HTTP/1.1 200 OK
[1] => 日付: 2011 年 6 月 2 日木 02:47:27 GMT
[2] => サーバー: Apache
[3] => IVA OUR IND COM "
[4] => Set-Cookie: BAIDUID=7F6A5A2ED03878A7791C89C526966F3A:FG=1;expires=Fri, 01-Jun-12 02:47:27 GMT; max-age=31536000; path=/;ドメイン=.baidu.com; バージョン=1
[5] => 最終更新日: 2011 年 1 月 20 日木 07:15:35 GMT
[6] => ETag: "65e-49a41e65933c0"
=> 受け入れ範囲: バイト
[8] => コンテンツの長さ: 1630
[9] => キャッシュ制御: max-age=315360000
[10] => 有効期限: 2021 年 5 月 30 日02:47:27 GMT
[11] => 接続 : 閉じる
[12] => Content-Type: image/gif
)
//パラメータ 1 を追加した効果
print_r(get_headers("http:/ /www.baidu.com/img/baidu_sylogo1.gif", 1 ); P3P] => CP=" OTI DSP COR IVA OUR IND COM "
[Set-Cookie] => BAIDUID=4D875812FC482C0ADE4F5C17068849EE:FG=1;有効期限=金曜日、01-6月-12 02:49:28 GMT; max -age=/; ドメイン=.baidu.com;
[最終更新日] => 07:15:35 GMT
[ETag] => "65e-49a41e65933c0 "
[Accept-Ranges] => バイト
[Content-Length] => 1630
[Cache-Control] => max-age=315360000
[Expires] => Sun, 30 May 2021 02:49 :28 GMT
[Connection] => Close
[Content-Type] => image/gif
)
get_headers 関数はまだ良いですが、効率に問題があるため、Curl を優先する必要はありません。curl がどのように機能するかを見てみましょう。コードは次のとおりです。
function check_remote_file_exists($url)
$ curl =curl_init($url);
// データを取得しません
curl_setopt($curl, CURLOPT_NOBODY, true); // これを追加しない場合は、403追加すると正しい 200 が返されます
//リクエストを送信
$found = false; send
if ($result !== false)
{
// http レスポンス コードが 200 かどうかを再度確認します
$statusCode =curl_getinfo($curl, CURLINFO_HTTP_CODE)
if ($statusCode == 200)
{
$見つかった = true
}
}
curl_close($curl);
$exists = check_remote_file_exists('http://www.baidu.com /img/baidu_sylogo1.gif');存在しますか? '存在します' : '存在しません';
$exists = check_remote_file_exists('http://www.baidu.com/test.jpg');
echo $exists : '存在しません';