我正在尝试制作一个应用程序,使用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的次数达百分之一百。
许多可伸缩的facebook应用程序在后台(在任务队列中)或完全在另一台机器上异步执行该任务,以避免减慢速度和消耗cpu突发。
尝试在您的fql查询中使用OR连接。
$fql = "select [...] from user where uid=123213312 OR uid=129038823 OR uid=893423890

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

10-08 13:29
查看更多