knplabs / knp-last-tweets-bundle
一个用于将Twitter用户的最新推文添加到页面的widget的Symfony2扩展包。
Requires
- php: >=5.3.2
- kriswallsmith/buzz: >=v0.5
- symfony/framework-bundle: >=2.0.0
- symfony/yaml: *
- twig/twig: >=1.6.5
Requires (Dev)
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。
请注意,推文已转换为可点击的链接。
安装
在您的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_cache
或doctrine_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} %}
致谢
- 初始工作由 KnpLabs 完成
许可证
KnpLastTweetsBundle
在MIT许可证下发布。有关详细信息,请参阅捆绑的LICENSE文件。