PHPackages                             vox/concurrent-futures - 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. [Utility &amp; Helpers](/categories/utility)
4. /
5. vox/concurrent-futures

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

vox/concurrent-futures
======================

Use concurrent multiple process on a python like interface.

0.1(8y ago)215PHPPHP &gt;=7.1

Since May 31Pushed 2y ago1 watchersCompare

[ Source](https://github.com/jhonatanTeixeira/concurrent-futures)[ Packagist](https://packagist.org/packages/vox/concurrent-futures)[ RSS](/packages/vox-concurrent-futures/feed)WikiDiscussions master Synced yesterday

READMEChangelog (1)Dependencies (2)Versions (2)Used By (0)

Concurrent Futures
==================

[](#concurrent-futures)

Heavily inspired by python's concurrent future module, this small library tries to abstract away the PHP's pcntl extension in a simple and robust solution.

Requirements
------------

[](#requirements)

- php 7.1 +
- pcntl
- cli SAPI

Instalation
-----------

[](#instalation)

```
$ composer require vox/concurrent-futures

```

Usage
-----

[](#usage)

```
// start a pool with a maximum of permited child processes.
//there will be a queue of runnable processes while the pool is full
$pool = new ProcessPool(3);

// map method return an array of future objects
$futures = $pool->map(function ($number) {
    return $number;
}, range(0, 2));

foreach ($futures as $future) {
    // a future object carries the result from the callable, it may throw an exception in case the callable has thrown one
    $result = $future->result();
}

// instead of map, one can submit callables one by one, and manipulate the resulting future object
$future = $pool->submit(function ($number) {
    return $number;
});

$result = $future->result();
```

###  Health Score

23

—

LowBetter than 26% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity9

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity48

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% 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

Unknown

Total

1

Last Release

2952d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/2b151b09844eedb0fc2a4a3f5ff6766ec85d3bd1f3c5553e0c117ee279ede952?d=identicon)[jhonatanTeixeira](/maintainers/jhonatanTeixeira)

---

Top Contributors

[![jhonatanTeixeira](https://avatars.githubusercontent.com/u/1003279?v=4)](https://github.com/jhonatanTeixeira "jhonatanTeixeira (6 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/vox-concurrent-futures/health.svg)

```
[![Health](https://phpackages.com/badges/vox-concurrent-futures/health.svg)](https://phpackages.com/packages/vox-concurrent-futures)
```

###  Alternatives

[creatuity/magento2-interceptors

Creatuity Compiled Interceptors Module

136138.3k1](/packages/creatuity-magento2-interceptors)[humanmade/page-for-post-type

Allows you to set pages for any custom post type archive

18810.2k](/packages/humanmade-page-for-post-type)[mmikkel/incognito-field

PlainText drop-in replacement that can be set to disabled, hidden or readonly.

11198.6k](/packages/mmikkel-incognito-field)

PHPackages © 2026

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