0

这就是我现在正在做的事情。

 foreach($response['data'] as $friends_phtoos) {
     $f_id = $friends_phtoos['id'];
     $img = 'https://graph.facebook.com/'.$f_id.'/picture';
     $image = $f_id.'.jpg';
getFacebookPhoto($img, $image);
 }

我正在为最多 10 张照片执行此循环但是下载所有 10 张照片需要很多时间。

快速获取这些照片的最佳方法是什么?我听说过batch。但我不知道如何将它与 PHP 一起使用。

getFacebookPhoto 函数是用于下载照片的 curl 函数。我可以使用 curl 获取 Facebook 照片吗?是否违反 FB 的条款和条件?(附加问题;)

4

2 回答 2

1

您正在进行 10 次 API 调用,这会减慢您的速度。使用 curl 没有问题,但是由于我不知道你的getFacebookPhoto函数是什么样子的,所以我将使用它file_get_contents来给你一个完整的解决方案。

诀窍是进行一次 API 调用并获取所有照片。使用 Graph API 路径/ID/photo/也会稍微减慢速度,因为这会导致 301 重定向到用户的照片。我将使用 FQL,因为它要快得多。这为您提供了一个包含 Facebook 照片的 ID 和 URL 的数组。不要假设数据会按照您发送 ID 的顺序返回。

$f_id = array();
foreach($response['data'] as $friends_phtoos) {
     $f_id[] = $friends_phtoos['id'];
 }
$ids = implode(',',$f_id);
$fql = "SELECT id, pic FROM profile WHERE id IN ({$ids})";
$url = 'http://graph.facebook.com/fql?q=' . urlencode($fql);
$fb_photos = json_decode( file_get_contents($url) );
于 2012-08-14T17:16:05.030 回答
-1

考虑到这个 forloop 没有什么特别之处,问题很可能在于您的下载。这需要这么长时间的原因与您的实施无关,但很可能与下载速度本身有关。

于 2012-08-14T16:51:41.500 回答