Download the PHP package vitaliyboyko/pcov without Composer

On this page you can find all versions of the php package vitaliyboyko/pcov. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package pcov

PCOV for large PHP codebases

This is an alternative distribution of PCOV for aggregate coverage of large PHP test suites. It keeps PCOV's fast opcode recording and all upstream APIs, and adds a synchronous native export path that can reuse an immutable executable-line manifest.

Normal PCOV records positive line hits while PHP executes. pcov\collect() later runs Zend control-flow-graph (CFG) discovery to find executable but unexecuted lines and builds the nested PHP coverage array. Repeating that work for many web requests can dominate coverage collection in a large application.

Nothing is forked from PHP-FPM, no work is delegated to another process, and request export remains synchronous. Native full collection is always the correctness fallback. The optimization is designed for coverage aggregated across an entire suite, not for a standalone request report.

Requirements and installation

Release 2.1.2 supports Linux, NTS PHP 8.3, 8.4, and 8.5. It uses the extension name pcov, so it replaces and cannot be loaded beside official PCOV.

Install with PIE, the PHP extension installer:

Or build from source:

Enable it in the dedicated coverage SAPI:

pcov.large_codebase controls manifest export and defaults to 1. Set it to 0 to retain upstream collection behavior without compile fingerprints or native export. Application sources must be immutable during a request and an OPcache generation must not mix deployments; use atomic deployment paths and reset OPcache when switching generations.

Upstream-compatible API

The original API and line-coverage semantics are unchanged:

pcov\waiting(), pcov\memory(), pcov\enabled(), pcov\all, pcov\inclusive, and pcov\exclusive remain available.

Large-codebase workflow

1. Define the deployment identity

The identity must change when application code, dependencies, enabled modules, generated code, or the relevant source inventory changes:

Use authoritative build inputs in place of the generic strings. Timestamps alone are not a deployment identity.

2. Generate an immutable manifest

During one complete reference suite, export full records tagged with that identity:

Build and atomically publish the immutable manifest from all reference records:

The reference suite must load the complete coverage scope. Keep old manifest generations while request records still reference them.

3. Export validated request hits

PCOV validates the runtime identity, every selected loaded file, SHA-256 source fingerprints, and every positive hit. New, changed, unreadable, raced, unknown, or incompatible code synchronously produces a complete full-fallback record. Temporary files are unique and publication uses atomic rename.

4. Merge into the normal PCOV representation

coverage.php returns the normal file => line => -1|1 array. The merger is deterministic and idempotent. It rejects corrupt records, mismatched identities, unknown files or lines, and incomplete fallback cohorts. A fallback is never silently reported as complete; rebuild the immutable manifest from a complete full-discovery suite before publishing the next generation.

See Manifest and record architecture for the identity, validation, fallback, and binary-format contract.

Added API

With no manifest, export() writes complete native coverage. Passing a deployment ID tags that full record for manifest creation. With a manifest and deployment ID, it writes validated hits or a synchronous full fallback. export_stats() exposes diagnostics used by the benchmark suite.

Coverage records use a fixed-width, big-endian, checksummed format (version 1) with strict bounds checking. Records are intentionally tied to an exact PHP_VERSION_ID; regenerate manifests when changing PHP or PCOV versions.

Benchmarks — 2.1.2

Magento

Magento 2.4.8 / PHP 8.3.31, 100 GETs across two routes; median of three rotating rounds. Total time includes requests and coverage merge; export is part of it.

Extension / setting Total time Export time Output
Official PCOV 1.0.12 29.893 s 17.347 s 38.53 MB
PCOV 2.1.2, cache off 14.857 s 0.420 s 25.66 MB
PCOV 2.1.2, cache on 14.712 s 0.380 s 25.66 MB

2.1.2 with cache on reduced total time by 50.8% versus official PCOV. Compared with the same 2.1.2 build with cache off, enabling the cache reduced export time by 9.5% and total time by 1.0%, reusing 94/100 records per round. All nine rounds produced identical coverage: 1,434 files and 42,145 executable lines. Measurements.

Synthetic CLI

PHP 8.5.11, 1,500 files, 64,500 executable lines, ten requests per round and ten rotating rounds. The GET cache is inactive in CLI. Total time and CPU include merge.

Extension Total median / p95 CPU median / p95 Export median Output
Official PCOV 1.0.12 0.856 / 0.873 s 0.855 / 0.873 s 144.3 ms 694,580 B
PCOV 2.1.2 0.781 / 0.790 s 0.781 / 0.790 s 11.7 ms 517,240 B

2.1.2 reduced total time by 8.7% and export time by 91.9% versus official PCOV. Coverage matched in all 20 runs. Summary · Raw rounds.

PCOV 2.1.2 uses an existing manifest in both benchmarks; initial manifest bootstrap is excluded.

Operational limits

Native Magento GET coverage cache (2.1.2)

Adds native GET coverage reuse and optimizes source hashing, checksums, and merging. Enable the cache with:

Restart PHP and keep your existing pcov\start() / stop() / export() collector unchanged. No PHP cache helper or invalidation calls are needed. Every request still records and validates its actual hits; matching GETs reuse serialized coverage and write a normal record at the requested path. Magento's private/no-store response headers do not prevent this: HTTP responses are not cached. Requires a valid manifest and pcov.large_codebase=1.

The flag defaults to 0. export() reports cache: hit|miss|bypass when enabled. See cache details.


All versions of pcov with dependencies

PHP Build Version
Package Version
Requires php Version >=8.3 <8.6
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package vitaliyboyko/pcov contains the following files

Loading the files please wait ...