我正在尝试使用facebook php sdk制作一个应用程序,从你的facebook朋友那里得到所有的生日和其他信息 .
我得到了好友列表和foreach循环,获取每个朋友ID的所有信息 .
这一切都有效,只需要4分钟即可获得所有信息 . (对于每个朋友,我都要打个电话)
我不能指望我的应用程序的用户等待那么久 .
有没有办法更快地获取信息 .
这是我的代码:
//$arrFriends is a list with all id's and names of friends
foreach ($arrFriends as $f => $value)
{
echo(' ');
$fql = "select uid, email, name, hometown_location, sex, birthday, education, relationship_status, pic_square from user where uid=" . $value[id];
$param = array('method' => 'fql.query','query' => $fql,'callback' => '');
$friend = $facebook->api($param);
//dan opslaan in de database:
print_r($friend);
echo(' ');
}
3 回答
每个fql查询都涉及到facebook的http请求,这可能很慢 .
如果您可以计算出一个查询以在单个响应中生成所有结果,然后在循环中处理该响应,那么您可能会获得更好的性能 much .
如果您不想使用FQL,batch requests就是为此目的而设计的 . 您构建一组图形请求并将它们一起发送 . 根据文档,它们是并行处理的 .
您可以使用
参考:https://developers.facebook.com/docs/reference/fql/
同样的结果,快速,快速,优雅的解决方案 . 愿你的表现与你同在 .
另一种解决方案(为您提供一个想法)
如果你有数百个朋友,这是非常正常和预期的 . 您正在循环中请求Facebook API for hundres .
许多可伸缩的facebook应用程序在后台(在任务队列中)异步执行该作业,或者可能完全在不同的计算机上执行该作业,以免减慢速度并消耗CPU突发 .
尝试在FQL查询中使用
OR
conjuctives .但在这种情况下,您的FQL查询会变得越来越大,因此您必须将其划分 . 因此使用第一解决方案