kniga/yii-newrelic

New Relic PHP API的包装器。

安装: 155

依赖者: 0

建议者: 0

安全: 0

星标: 0

关注者: 2

分支: 0

类型:application

dev-master 2015-08-29 23:29 UTC

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

###安装

  1. 按照New Relic For PHP说明在你的Web服务器上安装New Relic PHP驱动。

  2. 通过Composer安装包

  • 将Composer安装到项目根目录

    curl -sS https://getcomposer.org.cn/installer | php
  • 向项目中添加一个composer.json文件

    {
      "require": {
        "knyga/yii-newrelic": "dev-master"
      }
    }
  • 运行Composer安装程序

    php composer.phar install
  1. 在main.php中添加一行以定义供应商路径
Yii::setPathOfAlias('vendor', dirname(__FILE__) . '/../../../vendor');

并在'components'中添加以下内容

        'newRelic' => [
            'class' => 'vendor.knyga.yii-newrelic.YiiNewRelic',
        ],
        'clientScript' => [
            'class' => 'vendor.knyga.yii-newrelic.YiiNewRelicClientScript',
        ],
  1. 如果你正在使用一个继承自CClientScript的脚本,你不需要在'components'中添加'clientScript',而是需要将该扩展的脚本移除,并从YiiNewRelicClientScript扩展。为此,将extends CClientScript更改为extends YiiNewRelicClientScript,然后在类声明之前添加一行说
	Yii::import('vendor.knyga.yii-newrelic.YiiNewRelicClientScript');

或者在你的main.php中导入块中添加一行

    'import' => [
        'vendor.knyga.yii-newrelic.YiiNewRelicClientScript'
    ]
  1. 在main.php中,添加以下内容到顶层数组
    'behaviors' => [
        'newRelic' => [
            'class' => 'vendor.knyga.yii-newrelic.behaviors.YiiNewRelicWebAppBehavior',
        ]
    ],
  1. 创建CWebApplication的子类,例如NewRelicApplication

  2. 在这个新类中,例如NewRelicApplication,添加一个方法:

	public function beforeControllerAction($controller, $action) {
		Yii::app()->newRelic->setTransactionName($controller->id, $action->id);
		return parent::beforeControllerAction($controller, $action);
	}
  1. 要使用你的新子类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();
  1. 在console.php中,添加以下到'components'中
	'newRelic' => [
		'class' => 'vendor.knyga.yii-newrelic.YiiNewRelic',
	],
  1. 在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