Twitter requests async?

  • Hallo,


    Ik ben bezig om van een XXXX aantal mensen tweets op te slaan in een database (Kan niet te diep er verder op ingaan, maak het in opdracht).


    Nu blijkt dus dat de twitter API een limiet heeft, en je maar 100 widgets per account kunt aanmaken en dit irritant werk is.
    Dus lees ik gewoon http://twitter.com/TwitterNaam uit (cURL), en haal hier de benodigde informatie op.


    Het probleem als ik een foreach doe over een array dat de aanvragen niet asynchroom zijn, 108 accounts ophalen met hun laatste 20 tweets duurde 4 minuut 49 (Absurd, helaas reageert twitter niet sneller)


    Nu had ik de foreach gebruikt om iframes te genereren naar een bestand die alles toevoegd.
    add.php?naam=TwitterNaam


    Op deze manier word duurde het iets langer als 1 minuut, dus een enorme snelheidwinst (Helaas nog te langzaam voor wat ik zoek).


    Nu loop ik vast, want de laatste manier met iFrames is nog te traag, en niet uit te voeren als een cronjob.
    Nu gebruikte ik inplaats iframes het volgende:

    Code
    $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, 'http://127.0.0.1/add.php?naam='.$naam);
        curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);
        curl_setopt($ch, CURLOPT_TIMEOUT, 1);
        curl_exec($ch);
        curl_close($ch);


    Inplaats 4 minuut 49 duurde het nu nog 2 minuut en 8 seconden, een stuk sneller maar trager als met iFrames.


    Heeft iemand een idee hoe ik veel tweets van verschillende profielen kan opslaan in een database?


    Jordy

  • Geen PHP gebruiken. PHP is hier overduidelijk niet geschikt voor. Neem NodeJS of bijvoorbeeld Java om multithreaded of middels callbacks meerdere requests uit te zetten, en ze af te handelen zodra ze binnen zijn.


    Let wel op dat Twitter het waarschijnlijk niet zo heel erg kan waarderen als je 286 requests in een keer uitvoert, ik zou de requests dan ook in batches van bijvoorbeeld 20 uitvoeren.

  • Geen PHP gebruiken. PHP is hier overduidelijk niet geschikt voor. Neem NodeJS of bijvoorbeeld Java om multithreaded of middels callbacks meerdere requests uit te zetten, en ze af te handelen zodra ze binnen zijn.


    Let wel op dat Twitter het waarschijnlijk niet zo heel erg kan waarderen als je 286 requests in een keer uitvoert, ik zou de requests dan ook in batches van bijvoorbeeld 20 uitvoeren.


    Bedankt voor de reactie.
    Zal me verdiepen in nodeJS

Participate now!

Heb je nog geen account? Registreer je nu en word deel van onze community!