PHPBench will try and record as much information about the current environment as it can. This is facilitated by “environment provider” classes which implement the PhpBench\Environment\ProviderInterface and are registered with the environment_provider tag in the DI container.

This information is recorded in the XML document:

  <uname os="Linux" host="dtlt410" release="4.2.0-1-amd64" version="#1 SMP Debian 4.2.6-1 (2015-11-10)" machine="x86_64"/>
  <php version="5.6.15-1"/>
  <unix-sysload l1="1.04" l5="0.63" l15="0.55"/>
  <vcs system="git" branch="env_info" version="edde9dc7542cfa8e3ef4da459f0aaa5dfb095109"/>

This information can be readily viewed with the env report and can also be displayed when using the table report generator.


Class: PhpBench\Environment\Provider\Git. Available: When PHPBench is run in the root directory of a GIT repository.

The GIT provider will provide VCS information, including the branch and vesion (i.e. the commitsh).


Class: PhpBench\Environment\Provider\Php. Available: Always

Provides the PHP version.


Class: PhpBench\Environment\Provider\Uname. Available: Always

Provides information about the operating system obtained through the php_uname command.

Unix Sysload

Class: PhpBench\Environment\Provider\UnixSysload. Available: On non-windows systems.

Provides the CPU load for the following time periods: 1 minute, 5 minutes and 15 minutes.


Class: PhpBench\Environment\Provider\Sampler Available: Always

Provides sample measurements, by default it will provide mean times for executing the following micro-benchmarks (1000 revolutions):

  • nothing: An empty method.

  • md5: Calculation of an MD5 hash.

  • file_rw: File read and write.

These measurements can help determine the relative speed of the system under test compared to other systems.