やったこと

webサービスを作るときに考えたことを垂れ流します

Phirehoseを使ってTwitter Streaming APIでツイートを取得してみた!

「Phirehose」というPHPライブラリを使って「Twitter Streaming API」のリアルタイムのツイートを取得してみました。

以下その手順です。


■「Phirehose」をインストール!

以下のGithubの「Phirehose」のページからファイルをダウンロードして、zipを解凍してください。
https://github.com/fennb/phirehose

解凍すると「lib」のディレクトリがあるので、それをお目当てのwebサーバーにまるごと移動します。


■「Phirehose」でツイート取得!

以下のようなPHPコードで「Twitter Streaming API」の「statuses/sample」のリクエストを使って、リアルタイムのツイートを取得します。

このコードはPhirehoseのexampleディレクトリにある「sample.php」のサンプルコードを真似して作ったものです。

<?php
require_once('./lib/Phirehose.php');
require_once('./lib/OauthPhirehose.php');

class SampleConsumer extends OauthPhirehose
{
  public function enqueueStatus($status)
  {
    $data = json_decode($status, true);
    if (is_array($data) && isset($data['user']['screen_name'])) {
      print $data['user']['screen_name'] . ': ' . urldecode($data['text']) . "\n";
    }
  }
}

define("TWITTER_CONSUMER_KEY", "hogegegegegege");
define("TWITTER_CONSUMER_SECRET", "fugagagagaga");
define("OAUTH_TOKEN", "testestestestes");
define("OAUTH_SECRET", "123456789123456798");

// Start streaming
$sc = new SampleConsumer(OAUTH_TOKEN, OAUTH_SECRET, Phirehose::METHOD_SAMPLE);
$sc->setLang('ja');
$sc->consume();
?>

このコードを叩くとプロセスが走り出し、延々とツイートを標準出力で吐き出し続けます。

体感としては、だいたい秒速10~20ツイートくらいの勢いです。

ほとんど負荷がなくて、バックグラウンドで動かしていても全然平気です。

途中で接続が切れてしまった場合も、ちゃんとリトライで再接続をしてくれるお利口さんのようです。

以上!