0

しばらくの間、flickr の写真の写真ファイルの URL をデータベースに保存していました。最近、ファイルが削除された場合や変更された場合にデフォルトの画像を取得していましたs permisions are changed. After a while i came to the conclusion that the photo still exists and the permisions didnが、写真ファイルの URL が変更されました。

例えば:

写真URL:http ://www.flickr.com/photos/premnath/8127604491/

少し前に私が保存した写真ファイルの URL : http://farm9.staticflickr.com/8336/8127604491_0eeb3b472d_z.jpg

特定の写真ファイルの URL がまだ利用可能かどうかを確認する簡単な方法はありますか。アクセス時に変更された場合にこれらの URL を更新するスクリプトを実装したいと考えています。

私はphpFlickrを使用しています。

4

2 に答える 2

1

CURL から画像http://farm9.staticflickr.com/8336/8127604491_0eeb3b472d_z.jpgにアクセスしようとすると、HTTP ステータス 302 が移動し、 https://s.yimg.com/を指しています。 pw/images/photo_unavailable_z.gif (これは標準的な画像です。使用できない画像です)。

HTTP ステータスを取得し、それに基づいて行動する方法を見つける必要があります。302 は移動したことを意味します。200 は、イメージがまだ存在することを意味します。

PHP のサンプル コードは次のとおりです。

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://farm9.staticflickr.com/8336/8127604491_0eeb3b472d_z.jpg");
curl_setopt($ch, CURLOPT_HEADER, true);
curl_exec($ch);

$info = curl_getinfo($ch);

if ($info['http_code'] == 302) {
  echo "Image has moved";
}

curl_close($ch);
于 2014-04-07T22:36:36.090 に答える
0

インスピレーションをくれた msound に感謝します。ヘッダーをチェックすることは考えていませんでした。そこで、上記のより短く、理解しやすいバージョンを思いつきました。

$headerInfo = get_headers( $value['photo_file_url'], 1 );
if( $headerInfo[0] != "HTTP/1.1 200 OK" ){
   // Do something
}

get_headers関数は次のようなものを返します。

Array
(
    [0] => HTTP/1.1 200 OK
    [Date] => Tue, 08 Apr 2014 14:40:33 GMT
    [Content-Type] => image/jpeg
    [Content-Length] => 326978
    [Connection] => close
    [P3P] => policyref="http://info.yahoo.com/w3c/p3p.xml", CP="CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE LOC GOV"
    [Cache-Control] => max-age=315360000,public
    [Expires] => Sun, 10 Mar 2024 12:42:04 UTC
    [Last-Modified] => Wed, 25 Jul 2012 20:40:58 GMT
    [Accept-Ranges] => bytes
    [X-Cache] => Array
        (
            [0] => HIT from photocache814.flickr.bf1.yahoo.com
            [1] => HIT from cache414.flickr.ch1.yahoo.com
        )

    [X-Cache-Lookup] => Array
        (
            [0] => HIT from photocache814.flickr.bf1.yahoo.com:85
            [1] => HIT from cache414.flickr.ch1.yahoo.com:3128
        )

    [Age] => 1561078
    [Via] => 1.1 photocache814.flickr.bf1.yahoo.com:85 (squid/2.7.STABLE9), 1.1 cache414.flickr.ch1.yahoo.com:3128 (squid/2.7.STABLE9)
)
于 2014-04-08T14:45:35.150 に答える