IN参数超过20时,Facebook FQL错误

时间:2012-08-15 23:37:10

标签: facebook-graph-api facebook-fql facebook-php-sdk

$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。我想查询所有朋友共享的链接。感谢。

1 个答案:

答案 0 :(得分: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

您将以{20}的倍数递增$offset

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

(100个朋友的查询在5分钟后仍未返回结果。)

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