knyga / yii-newrelic
Wrapper around the New Relic PHP API.
Installs: 155
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 2
Forks: 0
Type:application
Requires
- php: >= 5.4
- lib-curl: *
This package is not auto-updated.
Last update: 2025-01-04 19:42:44 UTC
README
Yii wrapper around the New Relic PHP API.
Introduction
yii-newrelic is a wrapper around the New Relic PHP API. Automatic tracking of module/controller/action ID's is supported. Automatic injection of timing header and footer also supported.
###Requirements
- PHP 5.2+
- New Relic for PHP
- One of the following OS's:
- Linux 2.6+, glibc 2.5+ with NPTL support
- OpenSolaris 10
- FreeBSD 7.3+
- MacOS/X 10.5+
- Apache 2.2 or 2.4 via mod_php
- Intel CPU
###Installation
-
Install the New Relic PHP driver on your web server per New Relic For PHP instructions.
-
Install package via composer
-
Install Composer to your project root:
curl -sS https://getcomposer.org/installer | php
-
Add a
composer.json
file to your project:{ "require": { "knyga/yii-newrelic": "dev-master" } }
-
Run the Composer installer:
php composer.phar install
- In main.php add line to define vendor path:
Yii::setPathOfAlias('vendor', dirname(__FILE__) . '/../../../vendor');
And add the following to 'components':
'newRelic' => [
'class' => 'vendor.knyga.yii-newrelic.YiiNewRelic',
],
'clientScript' => [
'class' => 'vendor.knyga.yii-newrelic.YiiNewRelicClientScript',
],
- If you are using a script that subclasses
CClientScript
, instead of adding 'clientScript' to your 'components', you will instead need to orphan that extension's script and extend it fromYiiNewRelicClientScript
instead. To do so, changeextends CClientScript
toextends YiiNewRelicClientScript
, and then add a line before that class declaration that says:
Yii::import('vendor.knyga.yii-newrelic.YiiNewRelicClientScript');
Or add line to import block in your main.php:
'import' => [
'vendor.knyga.yii-newrelic.YiiNewRelicClientScript'
]
- In main.php, add the following to the top-level array:
'behaviors' => [
'newRelic' => [
'class' => 'vendor.knyga.yii-newrelic.behaviors.YiiNewRelicWebAppBehavior',
]
],
-
Create subclass of
CWebApplication
, e.g.NewRelicApplication
. -
In this new class, e.g.
NewRelicApplication
, add a method::
public function beforeControllerAction($controller, $action) {
Yii::app()->newRelic->setTransactionName($controller->id, $action->id);
return parent::beforeControllerAction($controller, $action);
}
- To use your new subclassed
CWebApplication
, modify index.php similar to:
$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();
- In console.php, add the following to 'components':
'newRelic' => [
'class' => 'vendor.knyga.yii-newrelic.YiiNewRelic',
],
- In console.php, add the following to the top-level array:
'behaviors' => [
'newRelic' => [
'class' => 'vendor.knyga.yii-newrelic.behaviors.YiiNewRelicConsoleAppBehavior',
],
],
###Features
- yii-newrelic automatically detects whether the New Relic PHP extension is properly installed.
- Automatic association of Yii module/controller/action ID's.
- Automatic injection of New Relic timing header/footer into your HTML layouts.
- Console commands also supported.
###Usage
- TODO: Finish docs with use cases with YiiNewRelic API wrapper methods
###Known issues and other comments
- A future release will aim to avoid needing to call YiiNewRelic::nameTransaction() via CWebApplication subclass. This seems to be the only reliable mechanism for determining the actual controller/action in use. An attempt was made to use Yii::app()->getUrlManager()->parseUrl(Yii::app()->getRequest()) in YiiNewRelicWebAppBehavior, but this does not seem to produce consistent results.
- Console apps currently only set the class name to YiiNewRelic::nameTransaction().
A future release will attempt to include the action as well. - Your contributions, as always, are greatly appreciated.
License
Modified BSD License https://github.com/gtcode/yii-newrelic