繁体   English   中英

facebook api非常慢

[英]facebook api is very slow

我正在尝试使用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('
'); }

您可以使用

SELECT uid, name, pic_square FROM user WHERE uid = me()
OR uid IN (SELECT uid2 FROM friend WHERE uid1 = me())

参考: https//developers.facebook.com/docs/reference/fql/

同样的结果,快速,快速,优雅的解决方案。 愿你的表现与你同在。


另一种解决方案(为您提供一个想法)

如果你有数百个朋友,这是非常正常和预期的。 您正在循环中请求Facebook API for hundres。

许多可伸缩的facebook应用程序在后台(在任务队列中)异步执行该作业,或者可能完全在不同的机器上执行该作业,以免减慢速度并消耗CPU突发。

尝试在FQL查询中使用OR conjuctives。

$fql = "select [...] from user where uid=123213312 OR uid=129038823 OR uid=893423890

但在这种情况下,您的FQL查询会变得越来越大,因此您必须将其划分。 因此使用第一解决方案

如果您不想使用FQL, 批处理请求就是为此目的而设计的。 您构建一组图形请求并将它们一起发送。 根据文档,它们是并行处理的。

每个fql查询都涉及到facebook的http请求,这可能很慢。

如果你能制定出一个查询产生在一个单一的响应结果,然后处理的循环中的反应,你可能会得到更好的性能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM