cURL调用Twitter API会议“速率限制”而不超过5个请求

时间:2010-11-04 22:10:31

标签: php twitter curl

我刚刚开始乱用一个非常非常基本的电话 Twitter API(http://api.twitter.com/1/statuses/user_timeline.json)来 通过cURL把我的推文拉到我的网站。但是,使用一个页面 没有人知道存在(因此消除了可能性) 无意中的交通),我之前收到了超出限价的事情 我有机会测试它。它说它在5点过后重置 小时,所以我再次检查,有一分钟它可以工作但是它又回来了 告诉我超过了我的速度限制。对于了解Twitter API和/或cURL的人来说,有几个问题:

首先,是应用于我的服务器(而不是用户)的速率限制?我会这么认为,但是 这当然会让它变得艰难。每个访问者甚至一个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。

任何帮助?

1 个答案:

答案 0 :(得分:3)

经过身份验证的请求应计入用户的350 /小时限制。未经身份验证的请求会根据您的IP地址的150 /小时限制计算。

如果您在开发过程中遇到限制,Twitter通常非常愿意将开发服务器IP列入白名单。

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

  

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