我有一个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)
- 您可以对结果进行相应的分组(例如按类别,标签…等)
- 你不需要实时计算,所有的东西都可以从缓存中获取