PHP Extension 5.10.0 released
- Improvement: Stacktraces attached to Spans now start at so-called “vendor boundaries” instead of the function that is actually instrumented to prevent deeply-nested library wrappers from pushing the application stackframes over the
tideways.backtrace_limit
. An example would becurl_exec()
being called inside of Guzzle’s middleware stack. Now the stacktrace will be cut at outermost call to Guzzle’srequest()
method. The default value oftideways.stack_threshold
has been reduced to 3000ms to generate more stack traces and the default valuetideways.backtrace_limit
has been reduced to 5 to counter-balance the increase in payload size. - Improvement: The timer used for measurements now uses PHP’s
hrtime()
timer for PHP 7.3+. Going forward the INI settingtideways.clock_source
is only used for PHP 7.2. - Improvement: Callgraph argument capture for regular expressions with the
/x
modifier now strips whitespace to show more useful parts of the regular expression. - Improvement: Span events now include memory usage data.
- Bugfix: Fix possible crash in Callgraph when first-class callables are used.
- Bugfix: Registering a dynamic callback using
Profiler::watch()
orProfiler::watchCallback()
for functions that are already instrumented is no longer allowed. - Bugfix: Fix MongoDB instrumentation memory leak if Tideways is started multiple times during a single request, for example in long-running worker scripts.
- Bugfix: Parameter types of the
\Tideways\Profiler
and\Tideways\Profiler\Span
methods are now unconditionally validated, resulting in consistent error reporting behavior independent of whether Tideways is running in tracing mode or not. - Bugfix: Manually handling Tideways’ lifecycle with
Profiler::start()
andProfiler::stop()
, for example with FrankenPHP’s worker mode or long-running queue workers, will now send the PHPInfo payload duringProfiler::stop()
, resulting in more accurate data. - Bugfix: Self-recursive Closures are now correctly handled in the Callgraph, if
tideways.features.closure_naming
is active.