检查Flickr照片文件网址是否仍然可用

时间:2014-04-07 19:50:56

标签: php url flickr phpflickr

我正在为我的数据库中的某些flickr照片保存照片文件网址一段时间了。 最近,当一个文件被删除或s permisions are changed. After a while i came to the conclusion that the photo still exists and the permisions didn改变时,我得到了默认图像,但照片文件网址已经改变。

例如:

照片网址:http://www.flickr.com/photos/premnath/8127604491/

我刚刚保存的照片文件网址:http://farm9.staticflickr.com/8336/8127604491_0eeb3b472d_z.jpg

是否有快速检查某个照片文件网址是否仍然可用的方法。我想实现一个脚本,如果它们在访问它们的时间发生了变化,就会更新这些URL。

我正在使用phpFlickr。

2 个答案:

答案 0 :(得分:1)

当我尝试从CURL访问图像http://farm9.staticflickr.com/8336/8127604491_0eeb3b472d_z.jpg时,我正在移动HTTP状态302,它指向https://s.yimg.com/pw/images/photo_unavailable_z.gif(这是标准图像不可用图像)。< / p>

您需要找到一种方法来捕获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);

答案 1 :(得分: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)
)