PHPackages                             qualtrics/jaeger-client-php - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Logging &amp; Monitoring](/categories/logging)
4. /
5. qualtrics/jaeger-client-php

ActiveLibrary[Logging &amp; Monitoring](/categories/logging)

qualtrics/jaeger-client-php
===========================

Jaeger bindings for the PHP OpenTracing API

v0.7.0(1mo ago)72.9k5[1 issues](https://github.com/qualtrics/jaeger-client-php/issues)[1 PRs](https://github.com/qualtrics/jaeger-client-php/pulls)Apache-2.0PHPPHP ^8.2CI passing

Since Oct 19Pushed 1mo ago6 watchersCompare

[ Source](https://github.com/qualtrics/jaeger-client-php)[ Packagist](https://packagist.org/packages/qualtrics/jaeger-client-php)[ RSS](/packages/qualtrics-jaeger-client-php/feed)WikiDiscussions master Synced 4w ago

READMEChangelog (2)Dependencies (8)Versions (18)Used By (0)

Jaeger Bindings for PHP OpenTracing API
=======================================

[](#jaeger-bindings-for-php-opentracing-api)

[![Build Status](https://camo.githubusercontent.com/262f5c0e9411e9f24bab7657f1c5bf30edf52a9655aa57e9e97e5500a7689025/68747470733a2f2f7472617669732d63692e6f72672f7175616c74726963732f6a61656765722d636c69656e742d7068702e7376673f6272616e63683d6d6173746572)](https://travis-ci.org/qualtrics/jaeger-client-php)[![OpenTracing Badge](https://camo.githubusercontent.com/0c34d42089573bfc38911b30f4fd5c7d3ef20dd05d0849b390643ccbf19695da/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4f70656e54726163696e672d656e61626c65642d626c75652e737667)](http://opentracing.io)[![Minimum PHP Version](https://camo.githubusercontent.com/4cbdbfeca62402b9ca3d48503f2bf66fc9809569bcd6de47196d39fecff71e72/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7068702d253345253344253230352e362d3838393242462e737667)](https://php.net/)[![License](https://camo.githubusercontent.com/a549a7a30bacba7bfceebdc207a8e86c3f2c02995a2527640dca30048fd2b64e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d417061636865253230322e302d626c75652e737667)](https://github.com/qualtrics/jaeger-client-php/blob/master/LICENSE)

This is a client-side library that implements an OpenTracing Tracer, with Zipkin-compatible data model. The library's package is `qualtrics/jaeger-client-php`.

**IMPORTANT**: Please note that while `jaeger-client-php` can record and report spans, it is **still under active development** and remains incomplete in a number of ways. It's modeled after [jaeger-client-go](https://github.com/jaegertracing/jaeger-client-go) in design, but many components are not yet implemented and the API is still subject to change.

Required Reading
----------------

[](#required-reading)

In order to understand the library, one must first be familiar with the [OpenTracing project](http://opentracing.io) and [specification](http://opentracing.io/documentation/pages/spec.html) more specifically. Additionally, one should review the [PHP OpenTracing API](https://github.com/opentracing/opentracing-php/blob/master/README.md).

How to Contribute
-----------------

[](#how-to-contribute)

We're still working on this; reach out to `@tylerchr` for now.

Installation
------------

[](#installation)

We recommend using a dependency manager like Composer when including this library into an application. For example, add these lines to your `composer.json` file:

```
{
    ...
    "require": {
        ...
        "qualtrics/jaeger-client-php": "dev-master"
    }
}
```

Initialization
--------------

[](#initialization)

```
use Jaeger\Reporter\RemoteReporter;
use Jaeger\Sampler\ProbabilisticSampler;
use Jaeger\Tracer;
use Jaeger\Transport\JaegerTransport;
use OpenTracing\GlobalTracer;

GlobalTracer::set(Tracer::create("service-name", [
    Tracer::SAMPLER => new ProbabilisticSampler(0.01), // Sample 1% of requests.
    Tracer::REPORTER => new RemoteReporter(new JaegerTransport("127.0.0.1", "5775")), // Send to jaeger-agent on localhost:5775
]));
```

You'll likely also want to make sure to flush the tracer just prior to application shutdown. The simplest way to do this is by registering a custom shutdown function:

```
register_shutdown_function(function() {

    GlobalTracer::get()->flush();

})
```

Instrumentation for Tracing
---------------------------

[](#instrumentation-for-tracing)

Since this tracer is fully compliant with the OpenTracing API 1.0, all code instrumentation should only use the API itself, as descriped in the [opentracing-php](https://github.com/opentracing/opentracing-php) documentation.

Features
--------

[](#features)

### Reporters

[](#reporters)

A "reporter" is a component receives the finished spans and reports them to somewhere. Under normal circumstances, the Tracer should use the default RemoteReporter, which sends the spans out of process via configurable "transport". Additionally, the `NullReporter`, a no-op reporter that does nothing, may be helpful to e.g. ignore trace data when tracing is disabled.

### Transports

[](#transports)

The remote reporter uses "transports" to actually send the spans out of process. Currently the only supported transport is Thrift over UDP. Perhaps more transports will be added in the future.

Two data formats are currently supported:

- The native Jaeger Thrift span format, which is accepted by the `emitBatch` API of [jaeger-agent](https://github.com/jaegertracing/jaeger/tree/master/cmd/agent)
- The Zipkin Thrift 1.x span format, which allows easy integration of the tracer with Zipkin backends and is also accepted by the `emitZipkinBatch` API of [jaeger-agent](https://github.com/jaegertracing/jaeger/tree/master/cmd/agent)

### Sampling

[](#sampling)

The tracer does not record all spans, but only those that have the sampling bit set in the flags. When a new trace is started and a new unique ID is generated, a sampling decision is made concerning whether this trace should be sampled. The sampling decision is propagated to all downstream calls via the `flags` field of the trace context. The following samplers are available:

- `ConstSampler` always makes the same sampling decision for all trace IDs. it can be configured to either sample all traces, or to sample none.
- `ProbabilisticSampler` uses a fixed sampling rate as a probability for a given trace to be sampled. The actual decision is made by comparing the trace ID with a random number multiplied by the sampling rate.

### Baggage Injection

[](#baggage-injection)

Baggage is not currently supported.

License
-------

[](#license)

[Apache 2.0 License](https://github.com/qualtrics/jaeger-client-php/blob/master/LICENSE).

###  Health Score

54

—

FairBetter than 97% of packages

Maintenance88

Actively maintained with recent releases

Popularity24

Limited adoption so far

Community14

Small or concentrated contributor base

Maturity74

Established project with proven stability

 Bus Factor1

Top contributor holds 95% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~223 days

Recently: every ~471 days

Total

15

Last Release

46d ago

PHP version history (4 changes)v0.1.0PHP ^5.6||^7.0

v0.4.0PHP ^7.1

v0.5.0PHP ^7.2|^8.0

v0.7.0PHP ^8.2

### Community

Maintainers

![](https://www.gravatar.com/avatar/651b6caee6efb853a0c59e40824c85d027773d20cadd37fd5ac03ada7af6c7fb?d=identicon)[tylerchr](/maintainers/tylerchr)

---

Top Contributors

[![tylerchr](https://avatars.githubusercontent.com/u/112462?v=4)](https://github.com/tylerchr "tylerchr (38 commits)")[![jaredririe](https://avatars.githubusercontent.com/u/7347795?v=4)](https://github.com/jaredririe "jaredririe (2 commits)")

---

Tags

distributed-tracingjaegertracingmicroservicesmonitoringopentracingjaegeropentracing

###  Code Quality

TestsPHPUnit

Code StylePHP\_CodeSniffer

### Embed Badge

![Health badge](/badges/qualtrics-jaeger-client-php/health.svg)

```
[![Health](https://phpackages.com/badges/qualtrics-jaeger-client-php/health.svg)](https://phpackages.com/packages/qualtrics-jaeger-client-php)
```

###  Alternatives

[jonahgeorge/jaeger-client-php

Jaeger Bindings for PHP OpenTracing API

1484.7M19](/packages/jonahgeorge-jaeger-client-php)[jukylin/jaeger-php

php client for jaeger

2251.6M6](/packages/jukylin-jaeger-php)[lvht/jaeger

php client for jaeger

1240.6k](/packages/lvht-jaeger)[extraswoft/jaeger

jaeger-sdk for swoft

204.9k](/packages/extraswoft-jaeger)[vinelab/tracing-laravel

Distributed tracing for Laravel made easy

81123.3k1](/packages/vinelab-tracing-laravel)[auxmoney/opentracing-bundle-core

Symfony Opentracing bundle to easily enable distributed tracing

25906.5k9](/packages/auxmoney-opentracing-bundle-core)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
