|
|
1
1
Twitter API提供了一个流式API,这可能是您想要做的,以确保捕获所有内容: http://dev.twitter.com/pages/streaming_api_methods
如果我明白你在找什么,你可能会想要一个
许多TwitterAPI库都内置了这个功能,但基本上你保持一个HTTP连接的开放,Twitter会不断地向你发送Twitter。见 streaming API overview 有关详细信息。如果你的库不为你做这些,你就必须检查掉的连接和重新连接,检查错误代码,等等——这些都在概述中。但是,在它们出现时添加它们将允许您首先完全消除重复项(除非您只允许每个用户一个条目——但这是稍后将要处理的客户端限制)。 只要你不敲打你的数据库,一旦你的Twitter只是发送你的东西,你就可以控制你的终端-你可以很容易地让你的客户缓存他们进来的tweet,然后在给定的时间或计数间隔把他们写进数据库-每5分钟写一次它收集到的任何东西,或者写一次它有100条tweet,或者两者都写(很明显ese数字只是占位符)。这时,如果需要的话,您可以检查现有的用户名——编写一个缓存列表可以让您有最好的机会让事情变得高效,无论您想怎样。 更新: 我上面的解决方案可能是最好的方法,如果你想获得现场效果(它似乎是你做的)。但正如另一个答案中所提到的,很可能只使用 Search API 在比赛结束后收集参赛作品,而不必担心如何存储它们-您可以在要求结果时指定页面(如搜索API链接中所述),但总的来说,您可以获取多少结果是有限制的,这可能会导致您错过一些参赛作品。什么解决方案最适合您的应用程序取决于您自己。 |
|
|
2
2
5分钟内的100个查询算不了什么。特别是因为一条tweet基本上只有3条相关的数据:用户ID、时间戳、tweet、tweet id——比如说,每个tweet大约有170个字符的数据。除非你在4.77MHz 8088上运行你的数据库,否则你的数据库在那种“加载”状态下都不会闪烁。 |
|
|
3
0
我读过你的问题,在我看来,你想复制Twitter已经存储的数据。如果没有更多关于你的跑步比赛的细节,比如用户如何输入估计数量的条目,就不可能知道在数据库本地存储这些信息是否是解决这个问题的最佳方法。 也许更好的解决方案是,跳过本地存储重复数据,直接从Twitter上拖动进入者,即当你试图找到一个赢家时。 您可以在代码运行时即时消除重复条目。一旦“下一页”处理完它已经提取的100个条目,就只需要调用它。不过,我不确定是否可以直接通过TwitterAPI实现。 |
|
|
4
0
我认为每x分钟运行一个cron,并根据tweets的创建日期进行设置可能会奏效。您可以查询数据库以查找上次录制的tweet的最后日期/时间,然后仅在有匹配时间时运行select以防止重复。然后,在数据库中执行插入操作时,使用一个或两个包含所有要记录的条目的insert语句来保持性能。
这似乎不太密集…也取决于你希望记录的tweet数量。还要确保正确索引表。 |