PHP Agent 2.6.5.41

Released on: 
Tuesday, December 13, 2011 - 21:49
End of Life

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.

Notes:

  • The apt repository is now digitally signed, and in order to update the agent from this repository for Ubuntu or other Debian-like systems you will need to import the new GPG key using the following command (please note the trailing minus sign!):

    wget -O - http://download.newrelic.com/548C16BF.gpg | apt-key add -

  • A very special and big thank you to Nick Calugar of IGN Entertainment for suggesting improvements to the way in which Zend and Magento transactions are named. For these two frameworks the transaction naming is now more accurate and adds less overhead than the previous mechanism used to name transactions. This also fixed an issue where Magento transaction names sometimes had garbage characters in them or sometimes even PHP script fragments. In both cases the transaction is named 'module/controller/action' as it is for other frameworks.

  • Another very special thank you to Roderick Smyth of Arithon in Dublin for absolutely invaluable help during the beta testing period and for testing the OCI8 support.
  • Significant improvements to automatic Real User Monitoring (auto-RUM). The most important change is that auto-RUM is now implemented as an output filter so it now works for all frameworks, not just Drupal and Wordpress. It is also considerably more reliable as a result, as modules and other changes to the framework no longer impact how we insert the RUM header and footer. If you previous had to manually insert RUM headers and footers, you are strongly encouraged to re-enable auto-RUM and comment out your existing manual calls. To go with this change there is a new API call, 'newrelic_disable_autorum()' that you can call to prevent auto-RUM from running for a given transaction. For example you may want to disable auto-RUM for AJAX calls.
  • Regardless of how it is invoked, the RUM footer will now never be ejected if the header was not also ejected in the same transaction. This prevents JavaScript errors if the header somehow fails to get inserted.
  • The RUM header and footer have been very slightly modified to add a missing semicolon after the last script command. This also prevents some browsers and compliance analyzers from complaining about the JavaScript.
  • Support for the MemCache-like features of Redis has been added. This is by no means full support for Redis, just those portions of the Redis API that map cleanly onto the existing MemCache metrics. They will show up in the overview graphs as MemCache activity, so if you use both MemCache and Redis the data will be merged, just as the overview for different SQL databases is merged.
  • Considerably improved support for multi-framework sites (where more than one framework is in use for multiple parts of the same site). Instrumentation for framework-specific functions is now isolated on a per-request basis, so multiple requests handled by one PHP instance will no longer be confused by by the sudden change in framework.
  • The logrotate script no longer conflicts with the version installed by the New Relic Server Monitor.
  • Implemented a timeout for agent-to-daemon communication so that if the daemon becomes unresponsive for whatever reason, the agent will no longer hang (and thus appear to crash Apache) waiting for the daemon to recover.
  • Correctly ignore user notice errors in the error handler.
  • Added support for the deprecated but still frequently used mysql_db_query function.
  • Added support for the Zend framework's Zend_Http_Client::request() method to track external service calls better in Zend.
  • Added the ability to use the syntax newrelic.appname="%{VARIABLE}"when setting the application name. This will use the SAPI's environment variable lookup mechanism to find VARIABLE and set the application name accordingly.
  • The REPLACE SQL command verb will now be recognized and unique metrics generated for it rather than being lumped into "other".
  • A thread mutex deadlock issue on OpenSolaris has been resolved.
  • Support for the pure PHP MemCached client from Wikia has been added.
  • file_get_contents() now shows up in the external services tab if the object being retrieved is remote and uses HTTP or HTTPS.
  • The newrelic_notice_error() now has a third invocation form, which takes a string and an Exception object. If the string is provided it is used as the error message. If it is empty then a default string in a format similar to Exception::__toString() is automatically generated and used as the error message. The exception object provided will be used to create the stack trace for the exception so that you can see the stack trace at the time of the exception, rather than the stack trace at the time of displaying the exception.
  • If you enable the capturing of request parameters by setting newrelic.capture_params = true, you can now also set newrelic.ignored_params to a comma-separated list of sensitive parameters to be excluded from any data sent to New Relic.
  • Support for CakePHP 2.0 has been added, and the CakePHP 1.2 and 1.3 support has been overhauled a little based on feedback from the author, Mark Story. CakePHP 1.2 applications will now be considerably faster when New Relic is enabled due to the new transaction naming mechanism. It will also ensure that transactions are correctly named even if you have implemented your own custom dispatcher class.
  • MongoDB now correctly instruments the update command.
  • Added support for Oracle databases by instrumenting the two most critical calls: oci_parse() and oci_execute(). No other OCI calls are currently instrumented.
  • A bug that had the potential to cause a segmentation violation has been fixed.
  • Several performance improvements that further reduce the overhead of the agent.