这就是我现在正在做的事情。
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张照片需要花费大量时间。
快速拍摄这些照片的最佳方法是什么? 我听说过批次。但我不知道如何在PHP中使用它。
getFacebookPhoto函数是一个下载照片的curl函数。 我可以使用curl来获取Facebook照片吗?这是违反FB的条款和条件的吗? (附加问题;)
答案 0 :(得分:1)
您正在进行10次API调用,这会降低您的速度。使用curl没有问题,但由于我不知道您的getFacebookPhoto
函数是什么样的,我将使用file_get_contents
为您提供完整的解决方案。
诀窍是进行一次API调用并获取所有照片。使用图谱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) );
答案 1 :(得分:-1)
考虑到这个forloop并没有什么特别之处,问题很可能在于你的下载。这花费这么长时间的原因与您的实现无关,但很可能与下载速度本身有关。