New Features
Support has been added for Laravel 5.3.
Experimental Laravel Queue support.
Experimental support for the Laravel Queue component has been added. This supports all versions of Laravel from 4.0 to 5.3, inclusive.
Whether run via
artisan queue:listen
orartisan queue:work
, queue workers will now generate a separate background transaction for each job that is processed. These transactions will be named with the class name of the job, orIlluminateQueueClosure
if a closure was queued.Additionally, a transaction that queues one or more jobs will be linked to the background transaction(s) that processed those jobs on the transaction map in the New Relic UI.
To enable this support, you will need to set the
laravel_queue
feature flag in newrelic.ini. For most users, this will simply involve adding this line:newrelic.feature_flag=laravel_queue
As this is presently an experimental feature, we would welcome feedback — both positive and negative — on whether this feature helps users using the Laravel Queue component better visualise the structure and performance of their applications.
If all goes well, it is anticipated that Laravel Queue support will be enabled by default in a future version of the agent.
Upgrade Notices
Symfony 1 transactions that generate 404 errors due to no routes being matched will now be named based on the module and action that are actually used, rather than the module and action inferred from the request URL. In most cases, this will result in the transaction name being based on the
error_404_module
anderror_404_action
Symfony settings.Note that, as a result of this change, if the configured 404 action calls
sfAction::forward()
to forward to another action, the transaction name will be based on the final action. All other uses ofsfAction::forward()
are unaffected.
Bug Fixes
- Previously, calling
PDO::query
with more than one argument resulted in the query being counted under the 'other' category on the Datastores page in the New Relic UI. This has been fixed. The agent will now correctly categorize the query as 'select', 'insert', 'update', or 'delete'. - Previously, calling
PDO::query
with more than one argument resulted in the agent reporting "(unknown sql)" if the query was slow. (i.e., it exceeded the threshold given by the newrelic.transaction_tracer.explain_threshold setting.) This has been fixed. - Previously, calling
SQLite3::querySingle
with two arguments resulted in the query being counted under the 'other' category on the Datastores page in the New Relic UI. This has been fixed. The agent will now correctly categorize the query as 'select', 'insert', 'update', or 'delete'. - Previously, calling
SQLite3::querySingle
with two arguments resulted in the agent reporting "(unknown sql)" if the query was slow. (i.e. It exceeded the threshold given by the newrelic.transaction_tracer.explain_threshold setting.) This has been fixed. - Transient Magento 2 tables now have the unique numbers removed from their names to avoid metric grouping issues.
- Pressflow 6 applications were incorrectly detected as Drupal 7 applications. This could cause POST requests made using
drupal_http_request
to be converted into GET requests. This has been fixed. - Explain plan generation is now always performed on a separate database connection. This has been changed to avoid issues when using MySQL's
SELECT FOUND_ROWS()
feature. - Previously, instrumenting method calls that resolved to
__call()
or__callStatic()
calls could result in crashes on PHP 7. This primarily manifested in crashes for users of certain WordPress plugins (for example, wp-external-links) that registered hooks or actions that used magic methods. This has been fixed.
New Features
- Support has been added for Zend Framework 3.
Bug Fixes
The behavior of the installer when attempting to detect PHP installations has been tightened up. Previously, a directory structure such as
/usr/local/php/php/*
would be detected as an installation of PHP in/usr/local/php
, as the nestedphp
directory would be wrongly assumed to be a PHP CLI binary. The installer now checks if the nestedphp
(orphp-config
) is a directory, and ignores the path if so.Although this is likely to improve the installer in multiple environments, most noticeably, this fix removes erroneous messages about there being multiple PHP installations when installing the PHP agent within the Docker Hub's official PHP images.
Spurious messages like
ALERT: oops, unknown child
could appear in the PHP FPM log when a New Relic daemon process was started. This has been fixed.
New Features
Ignore Errors
A new
newrelic.error_collector.ignore_errors
setting has been added. When configured, this setting can be used to prevent errors, such asE_WARNING
, from being reported to New Relic. This setting does not affect errors reported via thenewrelic_notice_error
API.Ignore Exceptions
A new
newrelic.error_collector.ignore_exceptions
setting has been added. This setting accepts a comma-separated list of fully-qualified class names. When an uncaught exception occurs, the agent will not report the exception to New Relic if it is an instance of a class in this list. This setting does not affect errors reported via thenewrelic_notice_error
API.
Upgrade Notices
Guzzle support is now enabled by default. It can be disabled by setting the new
newrelic.guzzle.enabled
setting to false.The
guzzle
feature flag that was previously used to enable Guzzle support is now ignored.
Bug Fixes
- The first request in each PHP process would remove any output handlers installed using the
output_handler
configuration setting for users of PHP 5.4 and later. This has been fixed: existing output handlers will now remain untouched. - Transient WordPress hooks now have the unique numbers removed from their names to avoid metric grouping issues.
- In cases where WordPress' WP_CONTENT_DIR directory was set to a custom value, WordPress plugin metrics were not reported on PHP 5.2 to 5.4, inclusive. This affected users of the popular WP-Skeleton project. This has been fixed.
- A regression in version 6.3 could cause Guzzle 6 users to lose support for cross application tracing and service maps, in particular when Guzzle 6 was autoloaded as a result of instantiating the only
GuzzleHttp\Client
object used within the lifetime of the script. This has been fixed.
New Features
- Support for Postgres prepared statements has been added when the
pg_prepare
andpg_execute
functions are used. The agent will now report Datastore metrics as well as capture slow queries.
Bug Fixes
- Added a workaround for a stack corruption bug in very old versions of the Suhosin extension when used with PHP 5.3 or higher. The bug exists in Suhosin 0.9.29 and older versions only. Newer versions are not affected.
- Automatic transaction naming could fail in certain circumstances on Laravel 4.1 or higher on PHP 5 when a before route filter was installed. This has been fixed.
- Automatic transaction naming could fail on Laravel 5.x when a global middleware handled the request without forwarding it deeper into the application. For example, the default Authenticate middleware returns a
401 Forbidden
response to unauthenticated requests, preventing proper transaction naming. This has been fixed. - A segfault could occur in memory constrained environments, particularly on PHP 7. This has been fixed.
New Features
- We're proud to announce initial support for Alpine Linux 3.1 and newer. Currently, manual installation is required.
New Features
- The PHP agent now has support for Doctrine 2 DQL Queries. When running a DQL query, it will appear alongside the SQL in both Slow SQLs and Transaction Traces.
Notes
- The agent now includes attributes for HTTP response headers in web transactions:
response.headers.contentType
response.headers.contentLength
Bug Fixes
- newrelic.transaction_events.enabled wasn't being observed. This has been fixed.
- The PHP in SUSE and OpenSUSE Linux was incompatible with some of the agent's features, including RUM and CAT. This issue has been fixed.
New Features
- Support has been added for Magento 2.
Bug Fixes
- Support for Laravel 5.2 has been added. Previously, Laravel 5.2 applications would fail to start with a
BadMethodCallException
. This was due to the agent's attempted use of a route filter for automatic transaction naming. Automatic transaction naming for Laravel 5.2 no longer relies on a route filter preventing the error. Automatic transaction naming for older versions of Laravel is unaffected. - Calling
phpversion("newrelic")
could return"unreleased"
instead of the actual version number. In turn, this causedcomposer show --platform
to report a version of 0. This has been fixed. The version number reported byphpinfo()
was not affected by this bug. - Fixed a potential segfault when using
Zend_Http_Client
under PHP 5.5 or 5.6 with OPcache enabled.
Bug Fixes
- Fixed a bug that could cause segfaults on PHP 7.0 when a
__call()
method was invoked and was slow enough to generate a trace node.
New Features
- Support has been added for PHP 7.0.
New Features
- The agent will now gather more information about the host system, including whether the system is running on Docker or AWS. This will be used to support upcoming features.
Notes
- We've changed the timestamp source for error events, which drive the Error Analytics page. Previously, the event's timestamp was the transaction's start time. It is now the time when the error occurred.