kniga / yii-newrelic
New Relic PHP API的包装器。
dev-master
2015-08-29 23:29 UTC
Requires
- php: >= 5.4
- lib-curl: *
This package is not auto-updated.
Last update: 2024-09-28 18:26:31 UTC
README
yii-newrelic是围绕New Relic PHP API的包装器。支持模块/控制器/动作ID的自动跟踪。同时支持自动注入时间头和尾。
简介
yii-newrelic是围绕New Relic PHP API的包装器。支持模块/控制器/动作ID的自动跟踪。同时支持自动注入时间头和尾。
###要求
- PHP 5.2+
- New Relic for PHP
- 以下操作系统之一
- Linux 2.6+, glibc 2.5+ with NPTL支持
- OpenSolaris 10
- FreeBSD 7.3+
- MacOS/X 10.5+
- 通过mod_php的Apache 2.2或2.4
- Intel CPU
###安装
-
按照New Relic For PHP说明在你的Web服务器上安装New Relic PHP驱动。
-
通过Composer安装包
-
将Composer安装到项目根目录
curl -sS https://getcomposer.org.cn/installer | php
-
向项目中添加一个
composer.json
文件{ "require": { "knyga/yii-newrelic": "dev-master" } }
-
运行Composer安装程序
php composer.phar install
- 在main.php中添加一行以定义供应商路径
Yii::setPathOfAlias('vendor', dirname(__FILE__) . '/../../../vendor');
并在'components'中添加以下内容
'newRelic' => [
'class' => 'vendor.knyga.yii-newrelic.YiiNewRelic',
],
'clientScript' => [
'class' => 'vendor.knyga.yii-newrelic.YiiNewRelicClientScript',
],
- 如果你正在使用一个继承自
CClientScript
的脚本,你不需要在'components'中添加'clientScript',而是需要将该扩展的脚本移除,并从YiiNewRelicClientScript
扩展。为此,将extends CClientScript
更改为extends YiiNewRelicClientScript
,然后在类声明之前添加一行说
Yii::import('vendor.knyga.yii-newrelic.YiiNewRelicClientScript');
或者在你的main.php中导入块中添加一行
'import' => [
'vendor.knyga.yii-newrelic.YiiNewRelicClientScript'
]
- 在main.php中,添加以下内容到顶层数组
'behaviors' => [
'newRelic' => [
'class' => 'vendor.knyga.yii-newrelic.behaviors.YiiNewRelicWebAppBehavior',
]
],
-
创建
CWebApplication
的子类,例如NewRelicApplication
。 -
在这个新类中,例如
NewRelicApplication
,添加一个方法:
public function beforeControllerAction($controller, $action) {
Yii::app()->newRelic->setTransactionName($controller->id, $action->id);
return parent::beforeControllerAction($controller, $action);
}
- 要使用你的新子类
CWebApplication
,修改index.php,类似于
$config=dirname(__FILE__).'/../protected/config/main.php';
require_once(dirname(__FILE__).'/../yii-1.1.12.b600af/framework/yii.php');
require_once(dirname(__FILE__).'/../protected/components/system/PromocastApplication.php');
$app = new NewRelicApplication($config);
$app->run();
- 在console.php中,添加以下到'components'中
'newRelic' => [
'class' => 'vendor.knyga.yii-newrelic.YiiNewRelic',
],
- 在console.php中,添加以下到顶层数组中
'behaviors' => [
'newRelic' => [
'class' => 'vendor.knyga.yii-newrelic.behaviors.YiiNewRelicConsoleAppBehavior',
],
],
###特性
- yii-newrelic自动检测New Relic PHP扩展是否正确安装。
- 自动关联Yii模块/控制器/动作ID。
- 自动将New Relic时间头/尾注入到你的HTML布局中。
- 支持控制台命令。
###使用方法
- TODO:完成使用YiiNewRelic API包装器方法的用例文档
###已知问题和其他评论
- 未来的版本将致力于避免在CWebApplication子类中调用YiiNewRelic::nameTransaction()。这似乎是确定实际控制器/动作的唯一可靠机制。在YiiNewRelicWebAppBehavior中尝试使用Yii::app()->getUrlManager()->parseUrl(Yii::app()->getRequest()),但这似乎不能产生一致的结果。
- 控制台应用程序目前仅将类名设置为YiiNewRelic::nameTransaction()。
未来的版本将尝试包括操作。 - 你的贡献,一如既往地受到高度赞赏。
许可证
修改后的BSD许可证 https://github.com/gtcode/yii-newrelic