我正在努力寻找与我最友好的朋友。
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测试器中正常工作。 可能的原因是什么?
答案 0 :(得分:4)
这是非常复杂的代码。为什么不让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';
答案 1 :(得分:1)
可能的原因是您粘贴的错误消息,您的查询在Facebook方面需要的资源方面过于昂贵。
将其分解为较小的查询,然后执行此操作。例如,在一次调用中获取朋友列表,将列表拆分为较小的块,并在单独的调用中检查批次的共同朋友计数。