PHPackages                             cursedcoder/eprocess - 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. [Queues &amp; Workers](/categories/queues)
4. /
5. cursedcoder/eprocess

ActiveLibrary[Queues &amp; Workers](/categories/queues)

cursedcoder/eprocess
====================

Multi-threading framework?

0.5(10y ago)650MITPHPPHP &gt;=5.6

Since Sep 2Pushed 10y ago6 watchersCompare

[ Source](https://github.com/cursedcoder/eprocess)[ Packagist](https://packagist.org/packages/cursedcoder/eprocess)[ Docs](https://github.com/cursedcoder/eprocess)[ RSS](/packages/cursedcoder-eprocess/feed)WikiDiscussions master Synced 3w ago

READMEChangelog (10)Dependencies (9)Versions (12)Used By (0)

EProcess
========

[](#eprocess)

[![Build Status](https://camo.githubusercontent.com/0180b105b4ac3900800fdb2dc4428d237ed024fbb6f81f35bc28ad898d3d6510/68747470733a2f2f7472617669732d63692e6f72672f637572736564636f6465722f6570726f636573732e7376673f6272616e63683d6d6173746572)](https://travis-ci.org/cursedcoder/eprocess)

The idea is to have multiple non-blocking contexts with a transparent inter-process communication out of the box.

This lib is just a PoC, use at your own risk.

Check out examples in `examples/` dir.

Features
========

[](#features)

- 3 adapters: child process (react), pthreads, symfony process (not tested)
- inter-process communication between childs-parent using unix sockets
- simple serialization for objects(jms serializer), arrays, scalars
- async event-driven flow (react eventloop)
- integration with frameworks, see `EProcess\Application\ContainerApplication` for Symfony
- child workers can have own child workers (i.e. `main -> worker -> worker ...`)

Install&amp;try
===============

[](#installtry)

- `git clone https://github.com/cursedcoder/eprocess`
- `cd eprocess`
- `composer install`
- `php examples/simple.php`

Example explains features
=========================

[](#example-explains-features)

Be aware this snippet below is only for explanatory reasons and will not work out (or at least yet).

For real examples see `exampes/simple.php` and related.

```
use EProcess\Application\Application;
use EProcess\Application\ApplicationFactory;

class Data
{
  // jms serializer metadata
  private $id;
  // setters getters etc.
}

class Main extends Application // like that one in c++
{
    public function run()
    {
        $worker = $this->createWorker(MyWorker::class); // create external non-blocking thread of MyWorker class
        $worker->send('any_event', 'Hello my worker!');
        $worker->on('hello_master', function() {
            // Receive back-call from child
        });
    }
}

class MyWorker extends Application
{
    public function run()
    {
        $this->on('any_event', function($data) {
            echo 'Got any_event event from my master: ' . $data; // data == Hello my worker
            // Still we can send any event back to master
            $this->send('hello_master');
            $this->send('send-any-data', new Data()); // you can send any object, array or scalar
            // object should have jms serializer metadata to be serialized
        });

        $this->getSubscribedEvents();
    }
}

ApplicationFactory::launch(Main::class);
```

You need to have proper autoloading established in order to use this example.

###  Health Score

27

—

LowBetter than 47% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity13

Limited adoption so far

Community12

Small or concentrated contributor base

Maturity55

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 85.5% 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 ~59 days

Recently: every ~2 days

Total

11

Last Release

3734d ago

PHP version history (2 changes)0.0.1PHP &gt;=5.5

0.0.7PHP &gt;=5.6

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/86657?v=4)[Marco Leogrande](/maintainers/dark)[@dark](https://github.com/dark)

---

Top Contributors

[![cursedcoder](https://avatars.githubusercontent.com/u/899452?v=4)](https://github.com/cursedcoder "cursedcoder (47 commits)")[![421p](https://avatars.githubusercontent.com/u/1667946?v=4)](https://github.com/421p "421p (4 commits)")[![haswelldev](https://avatars.githubusercontent.com/u/1667946?v=4)](https://github.com/haswelldev "haswelldev (4 commits)")

---

Tags

asyncnon-blockingreactpthreadsipcchild-process

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/cursedcoder-eprocess/health.svg)

```
[![Health](https://phpackages.com/badges/cursedcoder-eprocess/health.svg)](https://phpackages.com/packages/cursedcoder-eprocess)
```

###  Alternatives

[sulu/sulu

Core framework that implements the functionality of the Sulu content management system

1.3k1.4M203](/packages/sulu-sulu)[sylius/sylius

E-Commerce platform for PHP, based on Symfony framework.

8.5k5.9M738](/packages/sylius-sylius)[phpro/grumphp

A composer plugin that enables source code quality checks.

4.3k16.7M1.0k](/packages/phpro-grumphp)[matomo/matomo

Matomo is the leading Free/Libre open analytics platform

21.7k38.9k](/packages/matomo-matomo)[revolt/event-loop

Rock-solid event loop for concurrent PHP applications.

92553.8M226](/packages/revolt-event-loop)[illuminate/queue

The Illuminate Queue package.

21332.6M1.6k](/packages/illuminate-queue)

PHPackages © 2026

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