PHP Release Notes

 

Restart your web server if you have recently upgraded your agent. This will fix most reporting issues and will load the agent's new features and bug fixes.

PHP Agent Release Notes

Thursday, February 27, 2014 - 23:55

Notes

End of Life Notices

  • This release no longer supports BSD (either 32-bit or 64-bit) or the 32-bit variant of Mac OS X.

New Features

  • Add Laravel 4.0 support

    Laravel version 4.0 or greater is now supported natively. The naming scheme that we use follows the scheme developed by Patrick Leckey at Intouch Insight, and we are very grateful for his assistance.

    If you are already using the LaravelNewrelicServiceProvider from https://packagist.org/packages/intouch/laravel-newrelic then we recommend removing that from the list of service providers, and relying on our native support instead.

    However, if you are using the custom naming mechanism with 'name_provider' from the intouch/laravel-newrelic package, then those transaction names will take precedence over our automatically generated transaction names. If you do use 'name_provider', please write us and let us know what your namer does so we might extend our built in capabilities.

Bug Fixes

  • Improved real user monitoring Javascript insertion.

    The real user monitoring Javascript loader will now be injected after any meta charset tag, ensuring that the meta charset tag is close to the beginning of the page.

    The real user monitoring Javascript footer will no longer be inserted into HTML comments or nested HTML iframes.

  • Properly observe newrelic.ignored_params when capturing the request's URL.

    If newrelic.capture_params is true then the agent will capture the values within the $_REQUEST parameter and the full raw URL of the request. The contents of newrelic.ignored_params are used to selectively ignore values from $_REQUEST. The presence of newrelic.ignored_params will now also prevent the capturing of query parameters in the request URL.

  • Fix transaction naming when newrelic.webtransaction.name.functions is present.

    When newrelic.webtransaction.name.functions had a non-empty value, the URL was being used as the default web transaction name instead of the PHP filename.

  • Print backtrace to log file in the event of a segmentation fault.

    This functionality has been missing since release 4.4.

Thursday, February 13, 2014 - 23:24

Notes

We're happy to announce the availability of version 4.5.5.38 of the New Relic PHP Agent, featuring Drupal 8 instrumentation. More details below.

End of Life Notices

  • This release no longer supports any backdoor exceptions to run threaded Apache MPM. PHP itself is unstable in this environment.

  • This is the last release of the PHP agent for BSD (either 32-bit or 64-bit.)

  • This is the last release for the 32-bit variants of Mac OSX. 64-bit Mac OSX will still be supported.

  • This release no longer ships with any backdoor support for PHP 5.1.

New Features

  • Experimental Drupal 8 support

    Drupal 8 is now supported by the PHP agent's framework detection code. This support should be considered "experimental" given the pre-release nature of Drupal 8. Drupal 8 applications will have their transactions named correctly, and will also generate the same module, hook and view metrics as Drupal 6 and 7 applications. This support can be forced by setting the newrelic.framework configuration setting to drupal8 if auto-detection fails.

Upgrade Notices

  • All customers running on old x86 hardware that does not support the SSE3 instruction set (such as early releases of the AMD Opteron) should upgrade to this release as soon as possible. Prior to this release, the daemon inadvertently contained SSE3 instructions which would cause an illegal instruction on such hardware. The only way the SSE3 instructions were executed was when we changed the choice and priority of SSL cipher algorithms at our data center, and we would like to change those priorities by the end of 2Q2014.

Bug Fixes

  • Fixed a bug with file_get_contents instrumentation.

    Fixed a bug which would cause the default context to be ignored by file_get_contents when a context parameter was not provided. This issue was causing customer API calls to fail in certain situations. The previous remedy was to disable cross-application tracing to work around the issue. This is now fixed.

Wednesday, January 8, 2014 - 20:54

Notes

This release of the New Relic PHP Agent improves real user monitoring and adds support for custom parameters in transaction analytics events. These changes were made to create a solid foundation for future enhancements. Additionally, an emphasis was placed on reducing the download size of the agent. As a result, the download size has been reduced by 75%.

New Features

  • Improve Real User Monitoring

    The PHP agent's code for both automatic and manual injection of Real User Monitoring scripts has been improved. No application changes are required, but the new injection logic is simpler, faster, more robust, and paves the way for future improvements to Real User Monitoring.

  • Attach custom parameters to analytics events

    Custom parameters given to the agent through the API functions newrelic_add_custom_parameter and newrelic_set_user_attributes can now be automatically attached to transaction and page view analytics events. By default custom parameters will be attached to traces, errors, and transaction analytics events. Optionally, custom parameters can also be included in the JavaScript injected for Real User Monitoring. This allows custom parameters to be attached to page view analytics events.

    The behavior of custom parameters can be controlled through the following configuration settings, which are shown with their default values.

    newrelic.transaction_tracer.capture_attributes = true newrelic.error_collector.capture_attributes = true newrelic.analytics_events.capture_attributes = true newrelic.browser_monitoring.capture_attributes = false

Wednesday, December 11, 2013 - 22:54

Notes

This release of the PHP agent automatically marks Drupal cron requests as background tasks, improves the categorization of PHP errors within the New Relic UI, and fixes several bugs. Additionally, the internals of the agent have been significantly refactored to improve the stability and performance of the agent.

New Features

  • Treat Drupal cron requests as background tasks

    Drupal cron requests (identified by calls to drupal_cron_run()) will now be counted as background tasks (not web transactions) regardless of how they are started. Previously, it was necessary to use the newrelic_background_job() API to explicitly mark Drupal cron requests as background tasks.

  • Use the exception class as the category for errors

    Errors created using the newrelic_notice_error() API function with an exception will be grouped according to the exception's class. Previously, all errors were grouped under 'NoticedError'.

    See https://docs.newrelic.com/docs/php/the-php-api#api-notice-error

  • Limit the maximum number of nested PHP function calls

    The agent will now limit the maximum number of nested function calls within PHP applications. This is to provide protection against stack overflows due to infinite recursion. Previously, this would result in a segmentation fault. The agent will now log an error and terminate the process by raising a fatal PHP error. By default, this limit is set to a very high value of 500. Exceeding this limit should be extremely rare.

  • Improve the stability and performance of the agent

    The internals of the agent and its background daemon process have been significantly refactored to improve interprocess communication, stability and performance. The maximum number of connections to the background daemon process has been doubled to 4096.

Bug Fixes

  • Fix for installing on Ubuntu 13.10 when using PHP-FPM

    Previously the installer would fail to install a newrelic.ini file in the configuration directory for PHP-FPM (/etc/php5/fpm/conf.d), if one was present. This has been fixed, and the installer will correctly install a newrelic.ini for CLI, DSO and FPM configuration directories.

  • Fix for drupal_http_request() always returning NULL under PHP 5.5

    Version 3.9.5.13 added support for external calls made using drupal_http_request(). Due to the way the agent instruments this function under PHP 5.5, this function would always return NULL instead of the correct return value. This has been fixed.

  • Fix for real user monitoring when a Content-Length response header is present.

    When automatic real user monitoring is enabled, the agent will only perform JavaScript injection into HTML pages when a Content-Length header is not already present in the response. In some cases, this check was not working correctly leading to the value in the Content-Length header not matching the actual number of bytes sent to the client.

  • Fixed a segmentation fault when Zend Thread Safety is enabled.

    Attempts to use the agent under Apache using a threaded MPM (e.g. worker or event) and mod_php would result in segmentation faults. This has been fixed, but New Relic does not recommend using the agent in these circumstances.

  • Fixed high CPU usage under heavy load

    Under very high loads with thousands of PHP processes, the background daemon process could consume 100% CPU when the per-process file descriptor limit was exceeded. This has been fixed. The agent will now throttle the number of new connections accepted when per-process file descriptor limit is reached. A message is also printed to the log file.

Wednesday, November 20, 2013 - 00:55

Notes

  • Fix a segfault that could occur when the daemon was unable to bind to its listening socket during startup. The watcher process would then attempt to spawn a new daemon process leading to another segfault creating a loop. This loop would then cause the daemon log file to grow indefinitely. All customers are encouraged to upgrade.
Wednesday, November 13, 2013 - 21:22

Notes

  • We've added support for Symfony 2. Symfony 2 controller names will now show up in the web transactions view. This is an intermediate step leading up towards future Drupal 8 support.
  • We have improved Zend Framework 1 transaction naming in order to reduce instances of metric grouping issues.
  • We have tidied up our code for handling slow SQL statements.
Monday, October 28, 2013 - 23:32

Notes

  • Transaction traces containing many consecutive calls to curl_multi_exec will now show the cumulative time as a single node. Previously the transaction trace would show one node for each call.
  • We fixed segmentation faults when restarting Apache on Darwin and FreeBSD.
  • We corrected an issue in the newest Debian-based Linux distributions that prevented the newrelic.ini file from being installed properly.
  • A warning message is put in the agent log when newrelic_name_transaction() fails.
Monday, September 30, 2013 - 22:30

Notes

  • Support for histograms and percentiles
  • PHP 5.5 support added
  • PHP 5.1 deprecated
  • Various bug fixes and stability improvements.
Thursday, September 12, 2013 - 00:02

Notes

Support for two additional external calls has been added to cross application tracing.

  • Zend_Http_Client::request()
  • drupal_http_request()
Thursday, August 29, 2013 - 22:41

Notes

  • Preliminary support for Cross Application Tracing has been added. The following external calls are supported.
    • curl_exec()
    • file_get_contents()
    • httprequest::send()
  • Communication between the agent and the daemon process has been improved, fixing a rare issue that could affect data quality.
  • Fixes a rare issue where too many daemon processes could be launched.
  • Various bug fixes and stability improvements.
Tuesday, June 11, 2013 - 21:25

Notes

  • Magento transaction naming has been refined
  • MySQL errors will now be recorded properly under PHP 5.1
  • Request queue timing can be specified with X-Request-Start as well as HTTP_X_REQUEST_START
  • Other small bugfixes
Monday, June 3, 2013 - 21:42

Notes

  • Data uploads to the New Relic collectors now default to SSL. SSL can be disabled through the configuration file.
  • The agent now carries its own SSL certificate bundle, improving portability across platforms.
  • Queuing time display has been corrected for certain dispatcher configurations.
  • Various stability and performance enhancements.
Wednesday, May 22, 2013 - 19:18

Notes

  • Patch release to fix an occasional segmentation fault when using Drupal.
Wednesday, May 15, 2013 - 20:43

Notes

  • Drupal module instrumentation has been enhanced.
  • The agent can now instrument Drupal hooks and view execution.
  • The agent now reports the 50 most frequently called functions and the 50 slowest functions for individual requests. This data is now used on the Transaction Trace Summary tab allowing a more accurate and complete display of slowest components.
  • Auto-detection of local SSL certificates has been improved.
  • Various stability and performance enhancements.
Wednesday, May 1, 2013 - 23:55

Notes

  • The agent can now write an audit log that shows an unencrypted stream of all information sent to New Relic’s servers. The audit log can potentially use up a lot of disk space, so it’s best to use this on an as-needed basis.

  • In addition to wall-clock time, CPU time (a.k.a. “burn”) is included at the top of transaction traces in the New Relic user interface.

  • SSL connections to New Relic collectors are now kept alive for the entire application data harvest, rather than re-negotiated for each application during the harvest.

  • The agent will attempt to auto-detect client SSL certificates on FreeBSD.

  • This agent release also includes various bug fixes, including ones concerning obfuscated SQL processing and cross-application data leakage.

Thursday, April 25, 2013 - 21:04

Notes

  • The previous fix for the daemon spin was incomplete. This release correctly fixes the problem we identified.
Tuesday, April 23, 2013 - 21:30

Notes

  • Fixed a bug that was causing the daemon to spin and consume 100% of a CPU
  • Removed the 45 application limit
Thursday, April 11, 2013 - 18:49

Notes

  • Increase visibility into errors by adding error type (eg E_WARNING) to captured errors.
  • Refactor changes to local daemon to increase simplicity and stability.
  • Prevent duplicate log file descriptors on Apache restart.
Wednesday, February 27, 2013 - 14:26

Notes

  • Prevent potential memory leak by daemon when connecting applications.
  • Ensure that the agent will not block when attempting to connect to the daemon.
  • Fix potential locking bug during daemon's application harvest cycle.
Tuesday, February 12, 2013 - 22:09

Notes

  • Show full URL of external calls in transaction trace nodes. Username, password, and query parameters are stripped from the URL.
  • Fixed a bug causing time spent in background CLI tasks to be included in main overview graph.
  • Fixed a bug causing incorrect custom tracer metrics in the event of out of order clock times.
  • Look for and respond to 'X-NewRelic-ID' header in all incoming http requests. This change helps improve the correlation of performance between services in a service-oriented architecture for a forthcoming feature. In the meantime, if you wish to disable the header, set 'newrelic.cross_process.enabled=0' in your .ini file.

Pages