PHP Extension 5.7.0 released

  • New Feature: MongoDB instrumentation improvements to include anonymized query information about operations. This is an opt-in feature for now with the INI-setting tideways.features.mongodb_experimental=1.
  • New Feature: Automated instrumentation of Kafka producers using the rdkafka extension.
  • New Feature: \Tideways\Profiler::markAsCliTransaction() for HTTP-based cronjob functionality.
  • New Feature: Shopware 6 Instrumentation for Service Layer functions to provide more context in Timeline and Flamegraphs
  • Improvement: Support for upcoming Shopware 6.6.
  • Improvement: The Shopware 5 HTTP-based cronjob is no longer assigned to the literal cli service, instead it is marked as a CLI transaction and thus assigned to the proper CLI subservice.
  • Improvement: The hash to trigger traces, e.g. via the Tideways commandline client, is validated using a timing-safe comparison when running PHP 8.2 or greater.
  • Improvement: The INI setting tideways.enable_cli now defaults to 1.
  • Improvement: The INI settings tideways.dynamic_tracepoints.enable_* now default to 1.
  • Improvement: The filename embedded into the class name of an anonymous class is shortened to the basename to allow for stack trace deduplication when deploying into release-specific webroots.
  • Improvement: Handling of segmentation faults can now be enabled within the FPM configuration using php_admin_value[tideways.log_segfaults]=1 or env[TIDEWAYS_LOG_PHPSEGFAULT]=1.
  • Improvement: Handling of segmentation faults is more reliable when facing memory corruption and when using non-x86/amd64 architectures.
  • Improvement: The Garbage Collection Cycle Collector now has its own frame within the Callgraph.
  • Bugfix: Under some rare conditions the composer package information feature could lead to a crash. Follow-up to fix in 5.6.8
  • Bugfix: \Tideways\Profiler::start() no longer modifies the state of the global Mersenne Twister.
  • Bugfix: Tracing-mode instrumentation for CakePHP 4.x was fixed.
  • Bugfix: The closure naming implementation has been fixed to correctly count repeated calls to closures, implicitly fixing the performance issues that caused it to be disabled by default in Tideways 5.4.18.
  • Bugfix: preg_replace_callback no longer breaks Callgraphs when PCRE argument capture is enabled.
  • Bugfix: Included files whose first statement is a single-parameter function call no longer incorrectly attribute their top-level statements to the including function within the Callgraph.

About the author

  • Volker

Volker

I’m Head of Engineering at Tideways. My role combines hands-on engineering with technical leadership: I work on the product and the Tideways PHP extension, and I make sure our instrumentation stays fast and accurate with every new PHP release. Much of my work involves digging into PHP internals so our customers don’t have to.

PHP has been the main programming language of my career for over 20 years. At Tideways, I focus on performance analysis, benchmarking, and the low-level details of how the PHP engine behaves in production. I also contribute to the PHP project itself: I am the Release Manager for PHP 8.5, work on language RFCs, and work in the PHP Foundation’s Ecosystem Security Team. I particularly like turning engine-level insights into practical, measurable advice for developers.