richweber/yii2-phirehose 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

richweber/yii2-phirehose

Composer 安装命令:

composer require richweber/yii2-phirehose

包简介

Yii2 extension to the Twitter Streaming API

README 文档

README

A PHP interface to the Twitter Streaming API (firehose, etc). This library makes it easy to connect to and consume the Twitter stream via the Streaming API.

Installation

The preferred way to install this extension is through composer.

Either run

$ php composer.phar require richweber/yii2-phirehose "dev-master"

or add

"richweber/yii2-phirehose": "dev-master"

to the require section of your composer.json file.

Usage

Component Configuration

'components' => [
    ...
    'stream' => [
        'class' => 'richweber\twitter\streaming\lib\Stream',
        'username' => '1111111111-pPylwxC33VekLORMEfBIqYq8qekK4SqiD8pQpTs',
        'password' => 'OpKLltXkXBIUd4RQLwY8slLg3iIo2BCpXlgvkqxEBn33X',
        'consumerKey' => 'rvyKdnYDN887ohIfQU8m7tnxy',
        'consumerSecret' => 'oCYPFJSRPVlelJhEUCGVE8Aps0s4GpEfvNFR1ESQ01xTcq0xYL',
        'method' => 'user',
        'format' => 'json',
    ],
    ...
],

Building a Yii Console Command

<?php

namespace console\controllers;

use richweber\twitter\streaming\lib\Phirehose;

class StreamController extends \yii\console\Controller
{
    public function actionIndex()
    {
        Yii::$app->stream->consume();
    }
}

Activating extension

You can test Phirehose using the PHP console command:

php yii stream

Twitter will send a stream of follower information for the user account, followed by real-time data as it arrives.

To activate Phirehose as a keep-alive, always-on console command, we'll use the nohup command, e.g. no hangup, and redirect output to dev/null:

nohup php yii stream > /dev/null 2>&1&

Ubuntu will respond with a job id of your process for future monitoring and termination:

[1] 1376

If you wish to check that the process is running, scan the task list for the job id:

ps -e all | grep 1376

You should see something like this:

0 1000 1389 20855 20 0 17436 928 pipe_w S+ pts/8 0:00 grep --color=auto 1376 nohup php yii stream > /dev/null 2>&1

And you can terminate Phirehose by killing the job id:

kill 1376

Record the data received from Twitter

We want to minimize the amount of processing the real-time response needs to perform. Essentially, we just want to record the data received from Twitter to our database—and nothing else. We can do other processing in our own background tasks without slowing Phirehose's streaming connection. My example just takes tweet data from the incoming stream and stores it in the stream table:

<?php

namespace common\components;

use richweber\twitter\streaming\lib\Stream;
use common\models\Twitts;

class MyStream extends Stream
{
    // This function is called automatically by the Phirehose class
    // when a new tweet is received with the JSON data in $status
    public function enqueueStatus($status)
    {
        $stream = json_decode($status);
        if (!(isset($stream->id_str))) { return; }

        $model = new Twitts;
        $model->tweet_id = $stream->id_str;
        $model->code = base64_encode(serialize($stream));
        $model->is_processed = 0;
        $model->created_at = time();
        $model->save();

        var_dump($stream);
    }
}

Don't forget to change the class in config file.

'components' => [
    ...
    'stream' => [
        'class' => 'common\components\MyStream',
        ...
    ],
    ...
],

Phirehose

See:

Goals

  • Provide a simple interface to the Twitter Streaming API for PHP applications
  • Comply to Streaming API recommendations for error handling, reconnection, etc
  • Encourage well-behaved streaming API clients
  • Operate independently of PHP extensions (ie: shared memory, PCNTL, etc)

What this library does do

  • Handles connection/authentication to the twitter streaming API
  • Consumes the stream handing off each status to be enqueued by a method of your choice
  • Handles graceful reconnection/back-off on connection and API errors
  • Monitors/reports performance metrics and errors

What this library doesn't do

  • Decode/process tweets
  • Provide any sort of queueing mechanism for asynchronous processing (though some examples are included)
  • Provide any sort of inter-process communication
  • Provide any non-streaming API functionality (ie: user profile info, search, etc)

How To Use

See the example subdirectory for example usage. In each example file you will need to insert your own oauth token/secret, and the key/secret for the Twitter app you have created.

  • filter-oauth.php shows how to follow certain keywords.
  • sample.php shows how to get a small random sample of all public statuses.
  • userstream-alternative.php shows how to get user streams. (All activity for one user.)
  • sitestream.php shows to how to get site streams. (All activity for multiple users.)

Please see the wiki for documentation.

If you have any additional questions, head over to the Phirehose Users group [http://groups.google.com/group/phirehose-users]

It's recommended that you join (or at least regularly check) this group if you're actively using Phirehose so I can let you know when I release new versions.

Additionally, if you'd like to contact me directly, I'm @fennb on twitter.

richweber/yii2-phirehose 适用场景与选型建议

richweber/yii2-phirehose 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 264 次下载、GitHub Stars 达 3, 最近一次更新时间为 2015 年 02 月 08 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「php」 「api」 「twitter」 「phirehose」 「streaming」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 richweber/yii2-phirehose 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 richweber/yii2-phirehose 我们能提供哪些服务?
定制开发 / 二次开发

基于 richweber/yii2-phirehose 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 264
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 5
  • 点击次数: 18
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 3
  • Watchers: 1
  • Forks: 185
  • 开发语言: PHP

其他信息

  • 授权协议: GPL
  • 更新时间: 2015-02-08