【问题标题】:Facebook FQL error when IN parameter exceeds 20IN 参数超过 20 时 Facebook FQL 错误
【发布时间】:2012-08-15 23:37:09
【问题描述】:
$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。我希望查询所有朋友共享的链接。谢谢。

【问题讨论】:

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


    【解决方案1】:

    该查询需要永远执行。只需在 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分钟后仍未返回结果。)

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

    【讨论】:

    • 所以问题是因为查询需要很长时间,所以它崩溃了?对于我的原始查询,加载大约需要 5-10 秒。对于更长的时间,它只会在大约 5-10 秒内使网站崩溃。谢谢
    • 崩溃的可能不是 Facebook。检查您的 php.ini 文件中的 max_execution_time。这可能是您限制的来源。
    猜你喜欢
    • 1970-01-01
    • 2015-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-18
    • 1970-01-01
    相关资源
    最近更新 更多