Facebook顶级共享url,更新用户与间隔和mysql选择更新


Facebook top shared urls, update by user with interval and mysql select update

我知道标题很复杂,但我正在寻找一些建议,但一无所获。

我只是想问一下我的想法是否正确。

我需要为我的网站项目(图像,文章等)制作一个大约10个项目的facebook共享页面

这很简单,我将从facebook图形api和数据库更新的份额计数,我不想使它在一些ajax调用基于fb共享,它可能被滥用。

每个项目都有最后更新的日期时间,在数据库中创建日期和喜欢字段。

我还需要在24小时,7天和一个月,所以这个想法很简单:

  1. 用户查看一个项目,每10分钟从fb图形api获取此url的共享计数并在数据库中更新,数据库还存储上次更新时间。
  2. 每次用户查看项目,网站检查最后更新日期时间,如果超过10分钟,它使fb api调用和更新。每隔10分钟降低fb api调用。

这基本上可以工作,但有一个问题-并发。

当项目被选中时,然后在php中检查最后一次更新是否在10分钟前或更长时间,然后我调用fb api,然后更新共享计数(如果大于当前)和其余数据,因为远程调用是昂贵的,并降低fb api的使用。

所以,直到用户查看项目,他们被更新,但更新是依赖于选择,我不能使它在一个SQL语句中,因为时间检查和远程调用,所以一个用户可以进入,然后另一个,都在10分钟后,然后有机会调用fb api多次,更新多次,用户越多,调用和更新越多,这是不好的。

有什么建议如何解决这个问题吗?我做得对吗?也许有更好的方法?

您可以将api检查与用户交互完全分离,并且有一个单独的调度进程每10分钟收集一次facebook数据,无论用户是谁

或者,如果你更喜欢这种事件驱动的模型,那么你需要考虑使用"互斥体"。基本上,在某个地方(文件或数据库等)设置一个标志,表明当前正在运行一个检查进程,而不是运行另一个进程。