2010-11-04 103 views
5

我刚刚开始混淆对 Twitter API的非常非常基本的调用(http://api.twitter.com/ 1/status/user_timeline.json)至 通过cURL将我的推文发送到我的网站。然而,使用一个 没有人知道的页面(因此消除了不经意的流量的可能性),我在 之前得到了一个速率限制超出的事情,我甚至有机会测试它。它表示重置时间为 小时,因此我再次检查,并且一分钟后仍然有效,但是它返回 告诉我我的费率限制已超出。对于知道Twitter API和/或卷曲的人有几个问题:cURL调用Twitter API会议“速率限制”,但不超过5个请求

首先,应用于我的服务器(而不是用户)的速率限制?我会这样认为的,但是 可能会让它变得艰难。即使每个访问者的一个API调用 可能在具有边际流量的网站上轻松超过一小时内的速率限制 。有没有办法将呼叫与访问者关联,而不是 服务器?似乎可能不是,但我不完全确定整个API是如何工作的,并且cURL似乎在许多 位置中被提倡。我知道,如果我使用JSON和AJAX数据,我可以从用户请求 ,但仅仅为了争辩,什么 关于cURL?

其次,任何想法如何我可以超过我的利率限制,甚至没有 刷新页面?我支付在另一个位置托管,所以我可能 与另一个站点共享服务器空间,但我的网站肯定有 一个独特的IP,所以应该......应该是好的,对吧?那么 怎么样,即使没有运行代码(或者运行一次就运行 ?),我已经超过了速率限制?

这就是我已经得到了代码,如果它可以帮助:

$ch=curl_init("http://api.twitter.com/1/statuses/user_timeline.json?screen_name=screenname"); 
    curl_setopt_array($ch,array(
      CURLOPT_RETURNTRANSFER=>true, 
      CURLOPT_TIMEOUT=>5, 
     ) 
    ); 
$temp=curl_exec($ch); 
curl_close($ch); 
$results=json_decode($temp,true); 

而且,我现在得到它,这样如果Twitter返回限速错误,错误记录在一个文本文件,以及限制将重置的时间。看看这个文件,它唯一更新的时间(我没有重写,它只是增加了)是当我加载页面(这可能在一个小时内一次或两次),所以它不像其他的东西正在使用此页面并调用此URL。

任何帮助?

回答

3

已认证的请求应计入用户的350 /小时限制。未经验证的请求会根据您的IP地址的每小时150个限制进行计算。

如果您在开发过程中遇到了限制,Twitter一般很乐意将开发者服务器IP列入白名单。

http://dev.twitter.com/pages/rate-limiting

某些应用程序发现默认的上限证明不够。在这种情况下,我们提供白名单。可以将用户帐户和IP地址都列入白名单。无论是帐户还是IP地址,每个白名单实体允许每小时20,000次请求。如果您正在开发一个应用程序并希望考虑将其列入白名单,请填写whitelisting request form。由于请求数量众多,我们无法全部回复。如果您的请求获得批准,您会收到一封电子邮件。

+0

好的,这是有道理的。我只是拉我自己的Twitter流,所以没有任何需要涉及任何其他用户名,甚至是我自己的用户名,因为它是一个公共流。 – 2010-11-04 22:16:38

+0

我总是忘记我在这些回复中不能有回报。不知道为什么我可能会遇到费率限制?我不刷新页面接近150次。我不应该需要白名单,因为它应该是四行代码,我已经设置好了。但出于某种原因,在重置后的20分钟内,即使我没有加载该页面一次,我的限制已达到。 – 2010-11-04 22:18:06

+0

我会检查你在http://twitter.com/settings/connections上连接的第三方应用程序。你不是与其他一群人共享的IP,我想? – ceejayoz 2010-11-04 22:24:27