【问题标题】:Facebook Most Mutual FriendsFacebook 最多的朋友
【发布时间】:2012-08-15 15:28:32
【问题描述】:

我正在努力寻找与我共同好友最多的朋友。

public function topThreeMutualFriends() {
    $count;
    $query='select uid1 from friend where uid1 in (select uid2 from friend where uid1=me()) and uid2 in (Select uid2 from friend where uid1=me()) and uid1!=uid2';
    $result = $this->api(array('query' => $query , 'method' => 'fql.query'));
    if(!$result)
        throw new exception("No Mutual Friends");
    else{
        foreach ($result as $uid)
            $count[$uid['uid1']]++;
        arsort($count, SORT_NUMERIC);
        $i=0;
        foreach($count as $key=>$uid){
            $topthree[$i++]=$key;
            if($i==3)break;
        }
    return array($topthree,$count);}
    }

在上面的代码中引发了一个异常,说明:“由于资源限制,无法完成此 API 调用” 我尝试授予所有权限,并且查询在 fql 测试器中运行良好。 可能的原因是什么??

【问题讨论】:

    标签: facebook facebook-fql


    【解决方案1】:

    这是相当复杂的代码。为什么不让 FQL 找到你的前三位好友?

    $query = 'SELECT uid, name, mutual_friend_count 
              FROM user WHERE uid IN 
                (SELECT uid1 FROM friend WHERE uid2 = me()) 
              ORDER BY mutual_friend_count DESC LIMIT 3'; 
    

    【讨论】:

      【解决方案2】:

      可能的原因是您粘贴的错误消息,就 Facebook 方面所需的资源而言,您的查询过于昂贵。

      将其分解为更小的查询并改为这样做。例如,在一次调用中获取朋友列表,将列表拆分为更小的块,并在单独的调用中检查批次的共同朋友计数。

      【讨论】:

      • 是的,这完全正确。我们有同样的问题。超过 100 人的子选择会导致 facebook 经常放弃的负载。您需要将请求切成小块,然后对它们进行批处理、fql mutli 查询或只是迭代循环。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多