Dav*_*ell 6 php mysql api twitter
我正在创建一个应用程序来帮助我们的团队管理Twitter比赛.到目前为止,我已经成功地与API进行了交互,并返回了我需要的一组推文.
我正在努力决定处理数据库中推文存储的最佳方式,检查它们的频率以及如何确保没有重叠或间隙.
每页最多可以获得100条推文.目前,我目前的想法是运行一个cron脚本说,每5分钟左右一次,并一次抓取完整的100条推文,然后循环查看数据库以查看是否可以找到它们,然后再添加它们.
这有一个明显的缺点,即每5分钟对数据库运行100次查询,但INSERT
也有很多.我真的不喜欢.另外,我宁愿有更多的实时内容.由于Twitter是一项实时服务,因此我们应该在进入后立即更新我们的参赛者名单.
这再次引发了一个缺点,即不得不反复轮询Twitter,虽然可能是必要的,但我不确定我是否想要像这样敲打他们的API.
有没有人对优雅的解决方案有任何想法?我需要确保捕获所有推文,而不是让任何人离开,并保持db用户的唯一性.虽然我考虑过只添加所有内容然后按用户名对结果表进行分组,但它并不整洁.
我很乐意单独处理事物的显示方面,因为这只是来自mysql和显示器的拉动.但是后端设计让我很头疼,因为我无法看到一种有效的方法来保持它的结束,而不用锤击api或db.
Twitter API 提供了一个流 API,这可能是您想要确保捕获所有内容的方法: http://dev.twitter.com/pages/streaming_api_methods
如果我理解您要查找的内容,您可能需要一个statuses/filter
,使用track
具有您要查找的任何区别特征(主题标签、单词、短语、位置、用户)的参数。
许多 Twitter API 库都内置了此功能,但基本上您保持 HTTP 连接打开,Twitter 会在推文发生时不断向您发送推文。有关详细信息,请参阅流 API 概述。如果您的库没有为您做到这一点,您将必须检查断开的连接并重新连接,检查错误代码等 - 这一切都在概述中。但是,在它们进来时添加它们将使您能够从一开始就完全消除重复项(除非您只允许每个用户一个条目 - 但这是您稍后将处理的客户端限制)。
只要不破坏你的数据库,一旦你让 Twitter 向你发送东西,你就可以控制自己了——你可以轻松地让你的客户端缓存进来的推文,然后在给定的时间将它们写入数据库时间或计数间隔 - 写下它每 5 分钟收集到的内容,或者写下它有 100 条推文,或两者兼而有之(显然这些数字只是占位符)。这时您可以根据需要检查现有的用户名 - 编写缓存列表将让您有最好的机会让事情变得高效,但您想如何。
更新: 如果您想获得实时结果(看起来您确实这样做),我上面的解决方案可能是最好的方法。但正如另一个答案中提到的,很可能只使用搜索 API在比赛结束后收集条目,而根本不用担心存储它们 - 您可以在询问结果时指定页面(如中所述)搜索 API 链接),但您可以获取的总体结果数量是有限的,这可能会导致您错过一些条目。哪种解决方案最适合您的应用取决于您。
归档时间: |
|
查看次数: |
3287 次 |
最近记录: |