datadog_trace

APM and distributed tracing for PHP


The Datadog PHP Tracer brings APM and distributed tracing to PHP.

License: BSD 3-Clause

Latest releases

Version Release Download
0.48.3 2020-09-21 datadog_trace-0.48.3.tgz
0.48.2 2020-09-10 datadog_trace-0.48.2.tgz
0.48.1 2020-08-29 datadog_trace-0.48.1.tgz
0.48.0 2020-08-25 datadog_trace-0.48.0.tgz
0.47.1 2020-07-30 datadog_trace-0.47.1.tgz
Show all releases

Changelog

Version Message
0.48.3 ### Fixed
- Fix sigsegv in deferred loading #1022
0.48.2 ### Changed
- Update excluded modules #1011
- Deprecate dd-doctor.php #1014

### Fixed
- PHP 5.4 build in ZTS mode #1011
- Call ddtrace_engine_hooks_{rinit,rshutdown} #1013
0.48.1 ### Fixed
- Symfony HttpException with status less than 500 should not be considered an error #995, #1002 (thanks, @franek!)
- Block Zend signals from background sender thread #1000
- Fix out-of-sync issue if span stack is closed while a closure is running #1001
0.48.0 ## Important!
The legacy API for custom instrumentation `dd_trace()` is now a no-op in this release. See the [upgrade guide](https://docs.datadoghq.com/tracing/custom_instrumentation/php/?tab=tracingfunctioncalls#legacy-api-upgrade-guide) for instructions on upgrading.

The way PHP 5.4 and 5.6 hook into the engine has changed. Please read [deep call stacks on PHP 5](https://docs.datadoghq.com/tracing/troubleshooting/php_5_deep_call_stacks/) for more information on potential issues.

All calls to `DDTrace\trace_function` or `DDTrace\trace_method` functions need to happen before the first invocation of the target e.g. `DDTrace\trace_function('foo', ...)` should be done before `foo` is called for the first time. In the future this may need to be done before the target is even defined. This was previously noted in 0.45.0, but is now enforced for all PHP versions.


### Added

- Deferred initialization of integrations, and matching integration to a callable at compile time #891 #972
- Test for non-zero durations #950
- Add support for PHPRedis 3 extension on PHP 7 #948
- Add support for PHPRedis 4 extension on PHP 7 #982
- Add support for PHPRedis 5 extension on PHP 7 #983
- Add non-tracing API (hook_function/hook_method) #984

### Changed

- Improve CGI usage in test suite #952 (thank you @remicollet!)
- Remove `ddtrace.strict_mode` INI setting #955
- Sandbox PHP 5.6 using `zend_execute_ex` + `zend_execute_internal` #970
- Package `_generated.php` with PECL #980
- Move startup logs behind debug mode #986
- Split PHP 7's opcode handlers for previous case #987
- Sandbox PHP 5.4, cache negative lookups on PHP 5, and delete integrations using dd_trace #988
- Cleanup PHP 7 curl handlers #989
- Update dd_trace warning for being a no-op #990
- Defer loading of PHPRedis #992
- Defer loading of Predis #994

### Fixed

- Compatibility issues with PECL #845 (thank you @remicollet!)
- Fix package.xml validation for PECL #954
- Removed obsolete pre-integrations loading check from dd-doctor.php #956
- Fix off-by-one error with longest config name for integrations #985
0.47.1 **Deprecation notice**: The following environment variable names have changed. The old names are deprecated. See #969 for more details.

| Old Name | New Name |
| ---------------------------------------------- | ---------------------------------------------------- |
| `DD__ANALYTICS_ENABLED` | `DD_TRACE__ANALYTICS_ENABLED` |
| `DD__ANALYTICS_SAMPLE_RATE` | `DD_TRACE__ANALYTICS_SAMPLE_RATE` |
| `DD_INTEGRATIONS_DISABLED` | `DD_TRACE__ENABLED` |

### Added

- Add `DD_TRACE_AGENT_URL` environment support #926 (thank you @nurcahyo!) #962
- Support for `DD_TRACE__` env vars #969
- Deeper instrumentation of Symfony 4.4 #967

### Fixed

- Move startup logging to first RINIT #961
- Fix propagation of `DD_ENV` and `DD_VERSION` to children spans #963
- Remove query string when new resource mapper is used #973
Show complete changelog