从我的网站确定当前用户朋友共享的url


Determine URLs from my site that where shared by current user friends

我有一个PHP文章网站,允许登录与Facebook,我需要显示一个列表"文章由你的朋友分享"。每一篇文章都以链接的形式分享,比如mysite.com/articles/1。

我已经看到了这个问题,但由于链接表中的url字段没有索引,我不能使用"WHERE url LIKE '%mysite.com%'",因此检索到的链接列表将太大,无法通过PHP循环过滤(100个用户共享100个,每个页面加载将显示10000个url进行过滤)。

我目前正在使用这个FQL查询:"SELECT url FROM link WHERE owner IN (SELECT uid1 FROM friend WHERE uid2 = me()) LIMIT 1000;"并递归执行它,如果没有足够的记录留在过滤器后。此外,由于某些原因,这个查询比其他查询花费的时间要长得多。

任何想法?

您可以考虑离线(例如使用cronjob)定期从facebook获取结果,
并将结果存储在本地(如mysql)

在本地得到结果后,

  • 无需等待FQL
  • 你可以准备自己的缓存升温方式(如memcache)
  • 您可以对结果进行相应的分组(例如按类别,标签…等)
  • 你不需要实时计算,所有的东西都可以从缓存中获取