Facebook FQL - 非常慢

时间:2012-07-16 07:11:49

标签: php facebook facebook-graph-api

$access_token = $facebook->getAccessToken();
$query = "SELECT uid FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1=me())";
$query = urlencode($query);
$fql_query_url = 'https://graph.facebook.com/'. 'fql?q='.$query. '&access_token=' .    $access_token;
$fql_query_result = file_get_contents($fql_query_url);
$fql_query_obj = json_decode($fql_query_result, true);

这是查询。它让我更快,因为我的朋友有限。但是一些应用程序用户表示,如果他们有大约2000多个朋友,那对他们来说非常慢。他们说也需要30秒到几分钟。

为什么它会慢很多?这个请求有什么问题吗?

3 个答案:

答案 0 :(得分:4)

嗯,首先 - 只要您按uid过滤用户并且之后只选择uid - 外部查询看起来多余。所以最终的查询可以简化为

SELECT uid2 FROM friend WHERE uid1=me()

第二件事:使用fb php sdk执行FQL查询更方便,而不是file_get_contents,如:

$facebook->api("/fql?q={$fql}");

(摘自https://stackoverflow.com/a/7827550/251311

答案 1 :(得分:1)

它的速度较慢,因为需要收集更多数据。对于单个查询,2000多个朋友相当多...

可以在此处找到一些有用的信息 - https://developers.facebook.com/live_status

除了平台的实时状态(确实有用),还有两个图表显示平均API响应时间和API错误计数。如果您注意到请求速度非常慢,请转到该链接以查看是否存在系统问题。

答案 2 :(得分:0)

在我看来,FQL很好,但是当常规图形API无法满足您的要求时,应该使用它。在给定的情况下,如果唯一的要求是获取朋友的ID,那么您可以简单地使用以下代码。

FB.api("me/friends?fields=id&limit=3000", function(resp){//process data});