Php 下载多张个人资料照片

Php 下载多张个人资料照片,php,facebook,facebook-graph-api,Php,Facebook,Facebook Graph Api,这就是我现在正在做的 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张照片要花很多

这就是我现在正在做的

 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获取Facebook照片吗?是否违反了FB的条款和条件?(附加问题;)

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

您正在进行10次API调用,这使您的速度变慢。使用curl没有问题,但是因为我不知道你的
getFacebookPhoto
函数看起来像什么,我将使用
file\u get\u 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) );

我在我的专用服务器上有很好的下载速度。它有1gbps的端口。这次下载的平均下载速度是多少?@MaheshKumar它可能不一定在你这边。这可能是facebook的末日。听到这一点我很难过。没有办法加快速度?getFacebookPhoto此功能可逐个下载十张照片。有什么办法可以马上做吗?所以我可以节省很多时间。getFacebookPhoto将图片保存在服务器中。这是否违反了fb的条款和条件?我使用culr下载它们。这取决于你如何使用它们。您可以合法地将它们缓存一段“短时间”,但当所有者更改其照片时,您应该更新它们。我发现,根据外部缓存的决定,在每次页面加载时都可以轻松地将它们刷新。我对这个问题投了反对票:)我们是来优化其他人的工作的。我分享我的工作并寻求帮助。还是反对票:)惊讶!!!