0
$fql = "SELECT link_id, owner, created_time, title, summary, url, image_urls FROM link WHERE owner IN (select uid2 from friend where uid1 = me() LIMIT 20) AND created_time >= $_7ago";

上面的查询效果很好。但是,当我将 LIMIT 从 20 增加到 21 或更高时,我得到一个错误并且查询返回 Null。我希望查询所有朋友共享的链接。谢谢。

4

1 回答 1

0

该查询需要永远执行。只需在 Graph API 资源管理器中对其进行几次测试,即使从 20 个朋友那里获取链接也需要 > 28 秒。在我写这篇文章的时候,我有一个针对 100 个朋友的查询。我们会先看看它是否完成。

看起来如果您想获取所有朋友共享的所有链接,您需要将此查询分成更小的块并重复多次。

我可能会这样构建它,首先获取您最亲密的朋友的链接,然后深入挖掘与您没有共同点的人:

SELECT link_id, owner, created_time, title, summary, url, image_urls FROM link 
  WHERE owner IN (SELECT uid FROM user WHERE uid IN 
    (SELECT uid2 FROM friend WHERE uid1 = me()) 
    ORDER BY mutual_friend_count LIMIT $offset, 20)
  AND created_time >= $_7ago

你会以$offset20 的倍数递增。

这最好作为异步查询来完成,您将快速获得初始结果,其他人将在可用时填写。获得所有这些结果需要很长时间。

(100好友查询5分钟后仍未返回结果。)

顺便说一句,不要忘记将您的问题标记为已解决。

于 2012-08-16T02:06:30.843 回答