knplabs/knp-last-tweets-bundle

该包已被废弃,不再维护。没有建议的替代包。

一个用于将Twitter用户的最新推文添加到页面的widget的Symfony2扩展包。

安装数: 11,545

依赖: 0

建议者: 0

安全: 0

星标: 33

关注者: 35

分支: 18

公开问题: 5

类型:symfony-bundle

1.0 2012-07-25 13:58 UTC

This package is auto-updated.

Last update: 2022-10-23 13:35:24 UTC


README

遗憾的是,我们决定不再维护此项目了(查看原因)。如果您想将其他包标记为替代品,请发送电子邮件至 hello@knplabs.com

KnpLastTweetsBundles

警告

由于Twitter API v.1 已停用(查看详情),该扩展包仅支持OAuth驱动程序。旧用户需要更新 abraham/twitteroauth,使用 composer update abraham/twitteroauth 命令。

此Symfony2扩展包将允许您轻松地向页面添加包含Twitter用户最新推文的视觉widget。

Build Status

请注意,推文已转换为可点击的链接。

安装

在您的composer.json中添加KnpLastTweetsBundle

{
    "require": {
        "knplabs/knp-last-tweets-bundle": "*"
    }
}

在您的 app/AppKernel.php 中注册该扩展包

<?php

public function registerBundles()
{
    $bundles = array(
        // ...
        new Knp\Bundle\LastTweetsBundle\KnpLastTweetsBundle(),
    );
)

使用此扩展包需要Buzz库。

使用方法

安装扩展包后,只需执行以下操作:

{% render "KnpLastTweetsBundle:Twitter:lastTweets" with {'username': 'knplabs'} %}

或者,如果您想使用组合源

{% render "KnpLastTweetsBundle:Twitter:lastTweets" with {'username': ['knplabs', 'knplabsru']} %}

在这种情况下,推文将按日期排序。

配置

现在您需要配置该扩展包以使用三种可用驱动器之一。

API驱动器

最简单的驱动器是api驱动器:它在每次请求时调用Twitter API。

# app/config.yml
knp_last_tweets:
    fetcher:
        driver: api

这是默认设置 - 您甚至不需要将前面的配置添加到app/config.yml中。
但在生产环境中,它显然不是高性能的。

OAuth驱动器

oauth_driver使用InoriTwitterAppBundle。首先您应该配置并安装它。

然后您可以在配置中自由设置它

# app/config.yml
knp_last_tweets:
    fetcher:
        driver: oauth

Doctrine Cache驱动器

doctrine_driver使用DoctrineCache。首先您应该配置并安装它。

然后您可以在配置中自由设置它

# app/config.yml
knp_last_tweets:
    fetcher:
        driver: doctrine_cache
        options:
            cache_service: my_doctrine_cache_service #must be a valid doctrine cache

您可以使用LiipDoctrineCacheBundle来配置您的缓存。

Zend_Cache驱动器

zend_cache驱动器使用Zend_Cache将最新推文缓存到Zend_Cache_Backend(文件、APC、memcached等)中。

您需要首先安装并配置 KnpZendCacheBundle

# app/config.yml
knp_zend_cache:
    templates:
        knp_last_tweets:
            frontend:
                name: Core
                options:
                    lifetime: 300
                    automatic_serialization: true
            backend:
                name: File
                options:
                    cache_dir: %kernel.root_dir%/cache/%kernel.environment%

knp_last_tweets:
    fetcher:
        driver: zend_cache
        options:
            cache_name: knp_last_tweets
            method: api # or oauth

这将在至少300秒后才会调用Twitter API。

强制获取命令

缓存很好。但有时(在之前的例子中,每5分钟一次,如果你有连续的访问流量),你的访客将不得不等待2秒钟,而服务器正在调用Twitter API。

为了避免这种情况,你应该每4分钟启动一个cron作业,强制获取和缓存新的推文

php app/console knp-last-tweets:force-fetch knplabs

这样,你永远不会让你的访客等待!

数组驱动程序

array 驱动程序使用模拟数据,并不调用Twitter API。

它将返回10条虚假推文——在开发中非常完美。

# app/config.yml
knp_last_tweets:
    fetcher:
        driver: array

建议

  • 在开发中使用 array 驱动程序(编辑你的 app/config_dev.yml 文件)
  • 在生产中使用 zend_cachedoctrine_cache 驱动程序(编辑你的 app/config.yml 文件)
  • 在生产环境中,使用cron作业中的 force-fetch 命令
  • 如果你了解HTTP缓存,并且性能对你真的很重要,那么使用HTTP缓存!
  • 如果你遇到限制问题,请使用 oauth 驱动程序。

高级使用:HTTP缓存

请注意以下内容不是必需的:没有它,你也会很好。

如果你想将 lastTweets 操作渲染为ESI标签,可以使用 HTTP缓存ESI

这将通过使用整个渲染块的缓存版本来提高性能——即使在动态页面上也是如此。

遵循symfony.com上的 说明,并在你的模板中使用以下代码

{% render "KnpLastTweetsBundle:Twitter:lastTweets" with {'username': ['knplabs', 'knplabsru'], 'age': 5}, {'standalone': true} %}

致谢

许可证

KnpLastTweetsBundle 在MIT许可证下发布。有关详细信息,请参阅捆绑的LICENSE文件。