Twitter フレンドシップ

httpヘッダを読む

2011年02月03日
TwitterのAPIには、接続回数に制限があります。
制限数は基本的には決まっているのですが、時々変化するようです。1時間毎にクリアされるもの、1日毎にクリアされるものもあり、APIの種類によっても変わるようです。

はじめは、こちらでカウントしようかと考えたのですが、クリアのタイミングも分からないし、Twitterが情報を送ってくれていないかと調べてみました。
Twitter API 仕様書 の【API の実行回数制限】に記述があります。
どうやらヘッダが読めれば値がわかるようです。
ヘッダ中の
【X-RateLimit-Limit】が実行可能な回数
【X-RateLimit-Remaining】があと何回実行可能
だそうです。

TwitterのOAuth認証には、abraham's twitteroauth at master - GitHubを使わせてもらってます。このソースからヘッダを取得できればいいのですが。

色々調べると、それらしき部分がありました。
走らせて値を表示させてみます。
ううん。欲しい情報がなにもない。

ソースをみると、【apache_request_headers】を使っています。
【apache_request_headers】を調べると、PHPがスクリプトとして動いているときにのみ使える関数でした。
私の環境は、CGIです。CGIのときは、$_SERVERの値の一部を返しているようです。

では、自分で何とかできないか、とPHPの関数を調べると、【get_headers】関数を利用するとできるようです。

もっと簡単な方法はないかな。
abraham's twitteroauth at master - GitHubはエラーが起こると、その理由を返してくれます。
それは簡単に取得できるので、それを利用することにします。
エラー(API拒否)をTwitterに起こさせないようにするのではなく、エラーになるまで実行し、エラーが起こった時点で処理を中断するという考え方です。

これでAPI制限に引っかかっても、次回その続きから実行できるようになりました。