質問

一連のメソッドがあります( birddog、shadow、follow ) (ほとんど)永続的な接続を開き、多くのユーザーをフォローできるTwitter APIで。 bashでcURLを使用してサンプル接続コードを実行しましたが、うまく動作します。指定したユーザーがツイートを書き込むと、コンソールにXMLのストリームが表示されます。

私の質問: PHPで直接関数呼び出しとして返されないが、ストリーミングされるデータにアクセスするにはどうすればよいですか?このデータは散発的かつ予測不能に到着し、私が持っているものではありませんどこで対処し、どこで答えを探し始めればいいのかわかりません。ライブラリや落とし穴に関するアドバイスや説明をいただければ幸いです。

役に立ちましたか?

解決

fopen および fgets

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

これは決して素晴らしい(または優れた)コードではありませんが、必要な機能を 提供する必要があります。とりわけ、エラー処理とデータ解析を追加する必要があります。

他のヒント

ストリーム上のデータをリッスンしてから30秒後にスクリプトがタイムアウトすることは間違いありません。たとえそうでなくても、サーバーに大きな負荷がかかると、オープン接続とリッスン接続の膨大な数によってサーバーがひどくなります。

メッセージのキューを保存するだけのスクリプトを呼び出すAJAXソリューションをご覧になることをお勧めします。しかし、Twitter APIが正確にどのように機能するのかわからないので、すべてのツイートを取得するように要求されたときにスクリプトを実行できるかどうか、または何らかのデーモンがツイートをキューに追加する必要があるかどうかはわかりませんPHPは、AJAX呼び出しを介して読み取りと返送を行うことができます。

最近、これをはるかに簡単にする(そして再接続、ソケット処理、TCPバックオフなどの扱いにくい部分を処理する)ライブラリがあります。つまり、

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

AJAXの使用を検討することをお勧めします。私はPHP開発者ではありませんが、AJAX呼び出しをAPIに接続してWebページを更新できると思います。

Philehoseは間違いなく行く方法です:

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top