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.

Wednesday, February 27, 2013 - 14:26
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

  • 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
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

  • 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.
Friday, January 25, 2013 - 20:02
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.

Bugfixes

  • Correctly destroy a thread mutex that was sometimes not being destroyed.
  • Correctly obey newrelic.capture_params INI setting in regards to URL get parameters.
Wednesday, January 16, 2013 - 00:12
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.

Bugfixes

  • Fixed an issue where massive log files were created if the agent received a SIGSEGV.
  • Fixed an issue that occasionally caused SIGSEGV's when using RUM2.
Tuesday, January 8, 2013 - 19:09
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

  • Revert to using a UNIX-domain socket for agent to daemon communication. This is the same mechanism used in the 2.x and 1.x series of agents. This was done for speed purposes. The default socket path is the same as it was for the older versions of the agent: /tmp/.newrelic.sock. The newrelic.daemon.port option in the INI file and the portoption in the daemon configuration file (newrelic.cfg) can now take either a path to a UNIX-domain socket, or an integer in the range 1-65534. If you use a path, then a UNIX-doman socket will be used. If you use an integer, then a TCP socket will be used on the specified port.
  • Correct the "banner" displayed in the log file to show the version of the running PHP. Previously it was incorrectly showing the version that we had compiled with.
  • On platforms that support it, now attempt to display a stack dump in the unlikely event that the agent receives a SIGSEGV signal due to a bug. Displaying this stack is not always possible but when it works it is a big help for technical support to diagnose the exact cause of the problem. This feature existed in the 2.x series of agent but was not working correctly in the 3.x series until now.
  • Fixed a problem where a communications failure between the agent and daemon when sending a transaction trace would result in a core dump (rare).
  • Fixed a problem with Memcache metrics using the wrong metric name.
  • Fixed a coredump that would occur when sending SQL tracers that were both un-obfuscated and contained lots of UNICODE characters (very rare).
  • If a SIGSEGV signal is ever received make sure the daemon exits completely so that it can be respawned. Under certain conditions it could become "stuck" which would slow down the agent and stop all data from being sent to New Relic.
Monday, December 3, 2012 - 19:12
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.

Bugfixes

This release is a bug-fix release only and adds no new features to the agent. The following bugs introduced in 3.0/3.1 have been fixed:

  • Fixed two segmentation violations that would occur after calling the newrelic_set_appname() API call. One had the potential to affect all users, the other was restricted to customers who used prepared SQL statements both before and after the call to newrelic_set_appname().
  • Fixed a problem with the Solaris init scripts which made the incorrect assumption about the process ID of init.
  • Fixed a small memory leak that affected CodeIgniter, CakePHP and Drupal applications.
Tuesday, November 20, 2012 - 18:48
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

This release of the New Relic PHP agent adds two major new features, and includes several important bug fixes and stability improvements. The new features are:

  • Key Transaction Support, and
  • Real User Monitoring improvements.

Key transactions (discussed here) allow you to mark transactions that are important to your specific business needs and can have their own Apdex settings and error metrics.

The Real User Monitoring (RUM) improvements allow you to link select transaction traces with browser traces. Other improvements include the ability for RUM to work with multiple application names, and delivery of the RUM JavaScript file will only use the https protocol if the main page was also delivered via https. The new newrelic_set_user_attributes() API call can now also be used to add additional data to browser traces. Please see this page for details.

The following smaller improvements and bug fixes have been made:

  • Fixed an agent segmentation fault that occurred during Slow SQL processing at the end of a transaction.
  • Fixed a daemon segmentation fault that occurred if the agent communication with the daemon was interrupted for any reason.
  • Fixed a memory leak in the agent when the maximum number of Slow SQL statements for a transaction was reached.
  • Fixed an error that was preventing the daemon from re-spawning a copy of itself if the worker daemon died due to a segmentation fault.
  • Updated the newrelic_set_appname API call to no longer send the transaction thus far to the daemon unless you give it an argument explicitly requesting this behavior. This considerably reduces the overhead of changing application names on the fly.
  • Updated the newrelic_end_transaction API call to allow you to decide whether or not the transaction should be sent to the daemon. It is by default.
  • Fixed an error in the installer script where the license key was not being inserted into the INI file correctly.
  • Functions with custom instrumentation (newrelic.transaction_tracer.custom) will now produce metrics that can be used in custom dashboards.
  • If your application produces a Content-Length header, automatic RUM ("auto-RUM") will no longer inject the RUM header and footer, which would invalidate the content length calculated by your application.
  • The NR_INSTALL_KEY environment variable is now correctly obeyed.
  • The daemon is now compiled to support showing a backtrace in the event of a segmentation violation.
Tuesday, October 23, 2012 - 21:01
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

This release marks the start of a brand new series of PHP agent releases. This represents many months of performance tuning, stability improvements and additional new features. All existing users are highly encouraged to upgrade to the latest agent. There are many changes in this version, the most interesting of which are listed below. All users who are upgrading from a previous release are encouraged to read the upgrade notes document to fully understand some of the impacts of upgrading.

Highlights of this release include:

  • Drastic memory usage reduction. The agent overhead is down from approximately 35% to just 4%.
  • Significantly less stack space used (down from 40K per PHP function call to just 84 bytes). This affects users with deeply recursive functions.
  • License keys are now set in the INI file and not the daemon configuration file, and they are settable on a per-directory or per-virtual host basis. This very frequently requested feature will allow multi-tenant sites to use different keys for each tenant.
  • The New Relic daemon can now be started automatically by the agent. For upgrade customers it will still be started the way it always was with the init scripts, but you can now change that by configuring the daemon in your INI file. Please see this page on daemon startup modes for details.
  • Several bugs related to auto-RUM (Real User Monitoring) have been fixed, including a fix for non-standard HTML (where the head element is at the end of the document).
  • The agent startup "banner" now contains much more useful information that can be included in the initial dialog with support, and will short-circuit the typical "what OS and PHP version are you using exactly?" preamble to getting a ticket resolved.
  • The agent and daemon no longer use a UNIX-domain socket for their communications. Now a standard TCP socket (port 33142 by default) is used, which makes deploying in a chroot environment a lot easier.
  • The RPM and Debian packages have been split into three separate packages: the agent, the daemon and common scripts between the two. This was primarily done so that the agent was in its own package, and on 64-bit systems the agent package now only contains the 64-bit agent. This means that 64-bit users do not have to install the entire 32-bit runtime just to install the PHP agent. The 32-bit agent can always be installed alongside the 64-bit one.
  • The phpinfo() output has been changed to more clearly distinguish between global and per-directory settings. It now also correctly displays the per-directory value if the script was invoked from within a directory that changed default values.
  • The newrelic.transaction_tracer.top100 setting has been renamed to newrelic.transaction_tracer.detail.
  • You can now arbitrarily begin and end transactions (for example, at the beginning and end of each job queue unit of work). This is done using the new newrelic_end_transaction and newrelic_start_transaction API calls.
  • The daemon has been considerably simplified and uses fewer locks, thus reducing the potential for entering a "spin" state.
  • Many other improvements to speed and stability.
Thursday, June 7, 2012 - 12:30
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:

This is a very minor patch release to the 2.9 series of PHP agent. It contains only 1 small fix which only affects customers who use more than 1024 Apache worker processes:

  • Added missing ulimit command to daemon startup script to correctly set the maximum number of open file descriptors that the daemon can handle, in case the system default is too low.
Thursday, May 24, 2012 - 17:11
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:

  • Added support as an external service for HttpRequest::Send
  • Added limited support for curl_multi_exec. This will now show up as an external services call but will not provide insight as to how many or which web sites were handled by the function.
  • CakePHP transaction naming considerably improved
  • The daemon and agent now support up to 2048 file descriptors (up from 1024 on Linux). This is most relevant to larger sites that have > 1024 Apache worker processes.
  • The daemon behaves better if the maximum number of open file descriptors is exceeded.
  • The Debian installer no longer changes the permissions of the log directory if the system administrator had changed them. Also, if the log directory didnt exist (first time installation) default the ownership of the directory to the Apache user and group, if Apache is installed.
  • SQL parser fix to avoid being confused by the words "from" or "into" appearing in table names.
Tuesday, April 24, 2012 - 18: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:

  • Considerably more detailed transaction traces, reducing to almost nil the amount of "uninstrumented time" in TT graphs.
  • Detailed TT's (the so-called "top100" feature) are now enabled by default.
  • Reduced the overhead for detailed TT's dramatically, bringing it to within 2-3% of the agent speed without them enabled.
  • Fixed a memory bug that was causing garbage metric names to be sent to the daemon and then on to RPM.
  • Fixed erroneous behavior of the "newrelic_end_of_transaction()" API call. Previously it did not correctly end the transaction.
  • The fix to reduce metric grouping issues with WordPress table names no longer causes the table names to produce a warning in the logfile.
Thursday, March 15, 2012 - 19:25
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:

  • Updated to work with Apache 2.4
  • The auto-RUM buffer is now erasable, but doing so will obviously prevent auto-RUM from inserting the RUM header and/or footer.
  • Fixed a problem where WordPress blogs would result in metric explosion due to their database table naming scheme
  • Support transactions that last longer than 35 minutes. Long-running cron jobs will no longer report negative time.
Tuesday, February 21, 2012 - 19:52
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:

  • Support for PHP 5.4RC8 or higher. Please note that versions prior to RC8 will not work correctly, especially not with auto-RUM. Also please heed the advice that the PHP developers themselves give about using the 5.4 release candidates: do not use it in production.
  • Added the frequently-requested newrelic_set_appname() API that will allow you to change the name of the application on the fly. This should be called as early as possible, and cannot be called after the RUM footer has been sent.
  • Fixed an occasional segmentation violation caused by the Slow SQL feature, especially when using the command line version of PHP.
  • Fixed an occasional segmentation violation caused by auto-RUM.
  • Fixed a problem where the ZTS-enabled version of the agent would cause a segmentation violation when used on the command line.
  • Removed the colon from the list of characters that are invalid in SQL table names, and provide a mechanism to disable table name checking completely.
  • Fixed a small (about 10 bytes per request) memory leak.
  • Fixed an issue that would sometimes cause PHP execution time to not show up in the application overview graph.
  • If you call the newrelic_ignore_transaction() API function, no longer produce automatic RUM headers and footers for that transaction.
Monday, January 16, 2012 - 21:24
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:

  • Fixed an issue where using file_get_contents() could end up being mis-interpreted as an SQL node and cause a core-dump. This would only happen when Slow-SQL traces were enabled.
Monday, January 9, 2012 - 21:32
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:

  • Fixed several issues that would cause Apache to core-dump. Not all users would see these faults, but a few did and those bugs have been fixed.
  • Removed support for the PHP-only MediaWiki memcached client that was added in 2.6.5.41, as the code that was added to support this was part of what was causing random core dumps. It will be re-added in a future release.
  • Use less system stack space when hooking PHP functions so that PHP code that is massively recursive runs less risk of overflowing the stack.
  • Corrected the way the Mac OSX client was being built so it works on OSX 10.5.
  • Fixed a potential buffer over-run error in the Zend and Magento framework code that would be provoked if a controller name was significantly longer than the module name.
  • Removed the backslash from the list of illegal characters in SQL table names as some customers actually use it.
  • Prevent a file descriptor leak if you do a soft restart of Apache.
Friday, December 16, 2011 - 21:42
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:

  • There is an outstanding issue with the Zend View component where it kills the output buffer that auto-RUM relies on, so for this environment you will need to disable auto-RUM by setting newrelic.browser_monitoring.auto_instrument = 0 and doing manual instrumentation for the time being.
  • Fixed a potential spin-loop that would cause the agent to consume 100% of the CPU if the underlying OS did not allow the daemon connection (even if the daemon was up and running).
  • Only apply Real User Monitoring scripts to HTML content.
  • Fix an issue if auto-RUM encountered content it couldn't parse, it would cause a segmentation violation and cause Apache to core-dump.
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.
Thursday, November 10, 2011 - 07:28
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:

  • New feature: slow SQL. This is very similar to transaction traces but instead records the 10 slowest SQL statements, along with a stack trace of where the SQL was executed from in your program.
  • Fixed a bug in the automatic insertion of RUM headers and footers where they could sometimes be inserted multiple times (especially the footer).
  • The "Drupal Modules" feature can now be enabled and disabled on a per-directory basis like most other configuration settings.
  • A few minor bug fixes that had the potential for causing random agent crashes, although these were very infrequent.
Tuesday, November 1, 2011 - 22:42
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:

  • Very minor change to change the KB URL paths in error messages and to correct the LICENSE.txt file to include the full copyright and permissions notices for various open source components used withing the agent.
Friday, October 7, 2011 - 22:44
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:

  • Very minor change to the daemon to remove a pause on startup if the daemon happened to start within 30 seconds of the top of the minute.

Pages