Environment
===========
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:
.. code-block:: xml
This information can be readily viewed with the :ref:`report_env` report and can also be
displayed when using the :ref:`table report generator `.
GIT
---
**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``).
PHP
---
**Class**: ``PhpBench\Environment\Provider\Php``.
**Available**: Always
Provides the PHP version.
Uname
-----
**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.
Sample
------
**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.
.. _CPU load: https://en.wikipedia.org/wiki/Load_(computing)
.. _php_uname: http://php.net/manual/en/function.php-uname.php