Frage

Es ist eine Familie von Methoden ( birddog, Schatten und folgen ) in dem Twitter-API, die eine (meist) dauerhafte Verbindung öffnet und ermöglicht es Ihnen, viele Nutzer zu folgen. Ich habe die Probe Verbindungscode mit Curl in bash läuft, und es funktioniert gut. Wenn ein Benutzer ich einen Tweet angeben schreibt, ich einen Strom von XML in meiner Konsole bekommen

Meine Frage ist: Wie kann ich Daten mit PHP zugreifen, die nicht als eine direkte Funktion Aufruf zurückgegeben wird, sondern gestreamt Diese Daten kommen sporadisch und unvorhersehbar, und es ist nicht etwas, was ich habe jemals behandelt, noch weiß ich, wo die Suche nach Antworten zu beginnen. Jede Beratung und Beschreibungen von Bibliotheken oder Fallen würden geschätzt.

War es hilfreich?

Lösung

fopen und fgets

<?php
$sock = fopen('http://domain.tld/path/to/file', 'r');
$data = null;
while(($data = fgets($sock)) == TRUE)
{
    echo $data;
}
fclose($sock);

Dies ist keineswegs groß (oder sogar gut) Code, aber es sollte bietet die Funktionalität, die Sie benötigen. Sie müssen die Fehlerbehandlung und Daten-Analyse unter anderem hinzuzufügen.

Andere Tipps

Ich bin mir ziemlich sicher, dass das Skript nach einer Zeitüberschreitung wird ~ 30 Sekunden der Daten im Stream hören. Auch wenn es nicht der Fall ist, wenn Sie eine erhebliche Serverbelastung zu erhalten, die schiere Anzahl der offenen und hören Verbindungen auf den Server ein, um es die Knie bringen.

Ich würde vorschlagen, dass Sie einen Blick auf einer AJAX-Lösung nehmen, die einen Aufruf an ein Skript macht, die nur eine Warteschlange von Nachrichten speichert. Ich bin nicht sicher, wie die Twitter API genau obwohl funktioniert, so dass ich bin mir nicht sicher, ob Sie ein Skript ausführen, haben können, wenn die angeforderte alle Tweets zu bekommen, oder wenn Sie irgendeine Art von Dämon haben, haben hängen Sie die Tweets an eine Warteschlange dass PHP kann über Ihren AJAX-Aufruf gelesen und übergeben Sie zurück.

Es gibt Bibliotheken für diese in diesen Tagen, die Dinge viel einfacher (und behandeln die kniffligen Bits wie reconnections, socket Handhabung, TCP-Backoff, usw.) machen, das heißt:

http://code.google.com/p/phirehose/

Ich würde vorschlagen, in der Suche mit AJAX. Im nicht ein PHP-Entwickler, aber ich würde denken, dass Sie einen AJAX-Aufruf an die API verdrahten könnte und aktualisieren Sie Ihre Web-Seite.

Phirehose ist definitiv der Weg zu gehen:

http://code.google.com/p/phirehose/

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top