我有大量的 twitter 用户,我希望使用 PHP 将这些推文连接到一个网站上,并在 MySQL 中缓存这些推文。但是,当我访问 API 时,我似乎被速率限制问题难住了。我对每个用户提出的每个请求似乎都算作一个请求,这是有道理的。
我注意到其他网站*成功地完成了这件事。他们是如何解决这个问题的,他们只是被列入白名单,还是我缺少一种技术?
我有大量的 twitter 用户,我希望使用 PHP 将这些推文连接到一个网站上,并在 MySQL 中缓存这些推文。但是,当我访问 API 时,我似乎被速率限制问题难住了。我对每个用户提出的每个请求似乎都算作一个请求,这是有道理的。
我注意到其他网站*成功地完成了这件事。他们是如何解决这个问题的,他们只是被列入白名单,还是我缺少一种技术?
流式 API是您正在寻找的,更具体地说,是过滤器方法。过滤器,在其最低权限级别,将允许您实时关注 5,000 个用户,而无需他们授权您的应用程序,并且您也可以使用此方法跟踪多达 400 个关键字。
现在,如果您还想要历史推文,则必须从 REST API 中提取这些推文(流式 API 的计数参数在这里并没有真正的帮助),但是由于您只能通过 REST 检索用户的最后 3200 条推文API,您几乎可以通过传入 200 的计数参数值并相应地分页,通过对statuses/user_timeline的16 次调用来回填所有可用的推文历史记录。
http://api.twitter.com/1/statuses/user_timeline.json?screen_name=barackobama&count=200&page=2 http://api.twitter.com/1/statuses/user_timeline.json?screen_name=barackobama&count=200&page=3 http://api.twitter.com/1/statuses/user_timeline.json?screen_name=barackobama&count=200&page=4
每个 Twitter 帐户每小时可拨打 350 次电话,您每小时可以回填大约 22 个完整的用户时间线。
在实现方面,您可能会对Phiehose感兴趣,这是一个 PHP 的流式 API 客户端接口。
在获取推文之前先尝试进行身份验证。那应该增加速率限制
组合多个 user_timelines 的简单方法是创建 Twitter 列表并使用GET /:user/lists/:id/status。该单个 API 请求将返回列表中所有用户的最新推文。