New Features
- Users can now delete applications from the UI after 20 minutes of inactivity. Previously, this required a restart of the New Relic PHP daemon.
Upgrade Notices
- We rearchitected the daemon to enable future improvements.
- Daemon log levels are now simpler. While
verbose
andverbosedebug
will still work,debug
now gives you all the debugging information. Agent log levels remain unchanged.
End of Life Notices
- For the few customers who start the daemon manually, the newly renamed command-line flags can be found with the
-h
or--help
flags. The following old flags will be removed in a future release:- [-p pidfile]
- [-d level]
- [-c config]
- [-l logfile]
- [-P port]
- [-s]
- [-n]
- [-b SSL-certificate-bundle]
- [-S SSL-certificate-path]
- [-H host]
- [-x proxy]
- [-a auditlog]
Important
The end-of-life date for this agent version is July 29, 2019. To update to the latest agent version, see Update the agent. For more information, see End-of-life policy.
Bug Fixes
- A memory leak that could occur when a large number of PDO or mysqli statements were prepared and executed has been fixed.
Important
The end-of-life date for this agent version is July 29, 2019. To update to the latest agent version, see Update the agent. For more information, see End-of-life policy.
Bug Fixes
- This release fixes a rare bug where applications that had the ionCube loader enabled and called
set_exception_handler()
repeatedly could crash.
New Features
- Exceptions that are ignored by Laravel 5's default exception handler will also now be ignored by the PHP agent's error reporting feature. This can be controlled by adding or removing entries in the
dontReport
property of Laravel's default exception handler, as described in the Laravel documentation.
Important
The end-of-life date for this agent version is July 29, 2019. To update to the latest agent version, see Update the agent. For more information, see End-of-life policy.
Bug Fixes
- Under certain circumstances, version 4.23.0 of the PHP agent could crash when
newrelic_set_appname()
ornewrelic_end_transaction()
were called and a custom exception handler had been installed viaset_exception_handler()
. This has been fixed. - Under certain circumstances, Drupal applications that rely on the
newrelic_set_appname()
API function to start transactions would not see the Drupal tab in the New Relic UI. This has been fixed.
Important
The end-of-life date for this agent version is July 29, 2019. To update to the latest agent version, see Update the agent. For more information, see End-of-life policy.
New Features
Exceptions that are uncaught and handled only by a last resort exception handler installed via
set_exception_handler()
will now generate errors that can be viewed in the APM UI. Previously they would not be sent to New Relic at all.As a result of this, some customers will see more errors in the APM UI than they had previously seen.
Bug Fixes
In certain circumstances, such as an exception being thrown during database connection, errors generated by uncaught exceptions could result in the stack trace shown in APM including function argument values, which could potentially expose database passwords and other sensitive information. This problem has been fixed.
We now catch these formerly-uncaught exceptions and thus have control over how the stack trace is built, ensuring that function argument values will no longer show up in those stack traces.
Important
The end-of-life date for this agent version is July 29, 2019. To update to the latest agent version, see Update the agent. For more information, see End-of-life policy.
New Features
Support for the Predis library
The PHP agent now supports the Predis library. Users of this library will see new metrics in the Database tab, nodes in transaction traces, and breakdown metrics on individual transaction pages. Pipelining multiple commands will result in those commands being grouped and treated as a single command metric named pipeline
.
Note that our Predis support does not include instrumentation for commands wrapped in MULTI
and EXEC
via the Predis client's transaction
method. We also do not instrument the executeRaw
or monitor
methods of Predis, nor its PubSub functionality.
Increased specificity of PECL Redis metrics
Metrics made for the PECL Redis extension will now more closely match the name of the function called. For example, the redis::setex
method will now create a metric with the text setex
, rather than simply set
.
Named Laravel Artisan commands
Background transactions that are Laravel Artisan commands are now named. Instead of being named unknown
, Laravel Artisan commands will now be named based on the command. For instance, the command ./artisan cache:clear
will result in a background transaction named Artisan/cache:clear
.
UTC offsets in agent logfiles
The log file format has been extended to include the UTC offset of the local time zone. This makes it easier to match log entries to time windows in the New Relic UI.
Important
The end-of-life date for this agent version is July 29, 2019. To update to the latest agent version, see Update the agent. For more information, see End-of-life policy.
New Features
Zend Framework 2 transaction naming support
Support has been added for naming transactions automatically based on ZF2 route names. Transaction naming will work with routes set in module.config.php
, or anything else using the setMatchedRouteName
method of Zend\Mvc\Router\RouteMatch
(or the same methods of the corresponding HTTP
and Console
routers).
For example:
'router' => array( 'routes' => array( 'route1' => array( ... ) 'route' => '/foo[/:bar][/:baz]', 'constraints' => array( ... ), 'defaults' => array( ... 'route2' => array( ... )
Anything the router matches to route1
will be named route1
regardless of URL, parameters or controller. 404 errors and similar will be named "unknown".
Silex transaction naming support
Support has been added for naming transactions automatically based on Silex controller names. If a route name has been set using the Controller::bind()
method, then that will be used, otherwise the default controller name generated by Silex will be used instead.
For example:
// This will be named with the autogenerated "GET_hello_name". $app->get('/hello/{name}', function ($name) { ... });
// This will be named "hello", as bound. $app->get('/hello/{name}', function ($name) { ... })->bind('hello');
Automatic transaction naming will work on all Silex 1.x versions provided the default kernel
service has not been replaced with an object of a type other than Symfony\Component\HttpKernel\HttpKernel
. If the kernel
service has been replaced with something else, you will need to continue to use the newrelic_name_transaction
function to name your transactions.
End of Life Notices
memcacheDuration
attributes have been removed.A bug in version 4.19 of the PHP agent removed support for
memcacheDuration
attributes inTransaction
events. We have decided not to restore this functionality, as these durations are now accounted for indatabaseDuration
attribute values.
Bug Fixes
databaseDuration
attributes have been restored.A bug in versions 4.19 and 4.20 of the PHP agent resulted in
databaseDuration
attributes no longer being attached toTransaction
events. These have been restored, with one change: they now also include time spent in Memcached operations, as these are now unified with other datastores in New Relic APM.Fix application name rollup ordering issue.
When using application rollup names, the agent had the restriction that any name could only appear as the first rollup name once, which prevented the simultaneous connection of
a;b
anda;c
. This restriction has been removed.
Important
The end-of-life date for this agent version is July 29, 2019. To update to the latest agent version, see Update the agent. For more information, see End-of-life policy.
Bug Fixes
Support for mixed Laravel 4 and 5 environments has been improved.
Web servers serving both Laravel 4 and Laravel 5 applications from the same process pool could see autoloader errors in the Laravel 4 applications after the first load of a Laravel 5 page. This has been fixed, and mixed environments should now work as expected.
Laravel detection has been improved.
Starting with Laravel 5.0.15, applications with an optimized classloader use a new location for the optimized "compiled.php" file. Previously, the agent would fail to detect Laravel in this circumstance. The agent now looks in this new location as well as the old location for Laravel auto-detection.
Important
The end-of-life date for this agent version is July 29, 2019. To update to the latest agent version, see Update the agent. For more information, see End-of-life policy.
Bug Fixes
MySQLi segfaults fixed.
Version 4.20.0 could cause the PHP agent to segfault when certain types of parameters were bound to
mysqli_stmt
objects. This has been fixed.
Important
The end-of-life date for this agent version is July 29, 2019. To update to the latest agent version, see Update the agent. For more information, see End-of-life policy.
Release Unavailable
Due to a bug in this release related to the new explain plan support for MySQLi, we have decided to remove it from our download servers. Instead, we recommend installing version 4.20.1, which includes a fix for this bug.
New Features
Support for Laravel 5.0.
We are pleased to announce support for the latest Laravel release: Laravel 5. Sites and applications using Laravel 5.0 are now automatically detected and named in the same way as Laravel 4 applications.
Support for explain plans with MySQLi.
The existing support for generating explain plans for slow SELECT queries with the PDO MySQL driver has been extended to MySQLi. Explain plans are controlled by the newrelic.transaction_tracer.explain_enabled and newrelic.transaction_tracer.explain_threshold settings. These plans can be seen in the query analysis section of the slow SQL trace page in APM.
Explain plans will be generated for queries issued through
mysqli_query
,mysqli_real_query
, andmysqli_stmt_execute
, as well as their OO equivalentsmysqli::query
,mysqli::real_query
, andmysqli_stmt::execute
.Please note that the
mysqli_multi_query
API is not currently supported, and that explain plans are not generated for multiple (semicolon separated) queries.Added Memcache connection monitoring.
The
connect
andpconnect
functions (and their OO counterparts) of the Memcache extension are now instrumented, and will generate metrics. As a result, if there is a problem with calling those functions, it will now be visible within New Relic.
Bug Fixes
Laravel 4 App::after() filters are no longer overridden.
In certain circumstances, the improved Laravel transaction naming code in version 4.19 of the PHP agent could result in filters registered using Laravel 4's App::after() method no longer being executed. This has been fixed.
Upgrade Notices
- The daemon now uses openssl 1.0.1m, rather than 1.0.1l.
- The daemon now uses curl 7.41.0 rather than 7.40.0.