xml

  • TwitterのAPIは一定時間内での利用回数が制限されている。(例:1時間あたり150リクエストまで)
    そのためTwitterではあと何回APIの実行が可能かを取得するためのAPIも用意されており、TwitterのAPI制限状況を取得したい場合、以下のURLにアクセスすることで残りのAPI呼出可能回数およびリセットされる時間が分かる。

    http://twitter.com/account/rate_limit_status.xml

    $xml = @simplexml_load_file(“http://twitter.com/account/rate_limit_status.xml”);

    上記のようにsimplexml_load_fileを使うと、1時間当たりの上限リクエスト数、リセットされる時間や、TwitterのAPI制限に達するまでに利用できるAPIリクエスト数が返ってくる。

    SimpleXMLElement Object
    (
        [hourly-limit] => 150
        [reset-time-in-seconds] => 1317191935
        [reset-time] => 2011-09-28T06:38:55+00:00
        [remaining-hits] => 148
    )

    そこで、

    $limit = $xml->remaining-hits;
    $hourly = $xml->hourly-limit;

    のようにして、制限に達するまでに利用できるAPIリクエスト数、1時間当たりの上限リクエスト数を取得しようと考えるが、この方法ではうまくいかない。
    理由は簡単。返されてきたxmlの各データ[hourly-limit]、[reset-time-in-seconds]、[reset-time]、[remaining-hits]にハイフン「-」が含まれているのが原因。
    xmlのキーにハイフンが含まれていた場合は、以下のように記述すると成功する。

    $limit = $limit_status->{‘remaining-hits’};
    $hourly = $limit_status->{‘hourly-limit’};

    xmlのデータを処理していて、xmlの取得は成功しているのに、データとしてうまく取り出せない場合にも同様のケースがあることがある。