Twitter's "Rate limit exceeded. Clients may not make more than 100 requests per hour." aushebeln

Tags:
Seite:
1
2

Als ich kürzlich begann mit der Twitter API rumzuspielen, bemerkte ich ziemlich früh, dass Twitter die Anzahl der Anfragen auf 100 pro Stunde limitiert. Der offizielle Weg um diese Limitierung aufzuheben, ist, sich für die Twitter-Whitelist zu bewerben.

Dies war mir dann aber doch zu dumm und deshalb begann ich zu rechnen:

60min * 60s   60 * 60s
----------- = -------- = 36s
100 * 1min      100    =====

Meine Idee war nun, einfach sicherzustellen, dass maximal alle 36 Sekunden ein Request geschossen werden darf. Trotzdem mussten die Daten stetig verfügbar sein.

Hier der Plan:

* Mit 40 Sekunden bin ich auf der sicheren Seite, da ich so auf "nur" 90 Requests pro Stunde komme.

Eine Beispielimplementierung in PHP

/**
 * Get recent posts from user timeline
 *
 * Twitter limits the requests to 100 per hour. That makes
 * one request every 36 seconds.
 * 
 * So we cache for about 40 seconds and then get the
 * timeline updated.
 *
 * @param int $count
 * @return array
 */
function getUserTimeline($count = 20)
{
    $cacheFilePath = '/path/to/the/cache/file';

    //if cache file doesn't exist or the file is older than 40 seconds, we may update
    if (!file_exists($cacheFilePath) || filemtime($cacheFilePath) < time() - 40)
    {
        //add your functionality to get the user timeline
        //remember to retrieve all items you can get

        $timeline = array(); //this would be the items

        //cache the items
        file_put_contents($cacheFilePath, serialize($timeline));
    }
    else {
        //read the items from cache file
        $timeline = unserialize(file_get_contents($cacheFilePath));
    }

    return array_slice($timeline, 0, $count);
}   

Auf der nächsten Seite gibt's noch eine Referenzimplementierung von Zend_Service_Twitter.

Seite:
1
2

Ähnliche Artikel

Kommentare