PHPackages                             andrey-tech/parallel-executor-php - 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. andrey-tech/parallel-executor-php

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

andrey-tech/parallel-executor-php
=================================

Простой класс на PHP 7.2+, позволяющий выполнять задачи в нескольких параллельных потоках исполнения при помощи PHP-расширения parallel

1.0.0(5y ago)425MITPHPPHP &gt;=7.0

Since Jun 30Pushed 5y ago2 watchersCompare

[ Source](https://github.com/andrey-tech/parallel-executor-php)[ Packagist](https://packagist.org/packages/andrey-tech/parallel-executor-php)[ Docs](https://github.com/andrey-tech/parallel-executor-php)[ RSS](/packages/andrey-tech-parallel-executor-php/feed)WikiDiscussions master Synced 1w ago

READMEChangelog (1)DependenciesVersions (2)Used By (0)

Parallel Executor
=================

[](#parallel-executor)

Простой класс на PHP 7.2+, позволяющий выполнять задачи в нескольких параллельных потоках исполнения при помощи PHP-расширения [parallel](https://www.php.net/manual/ru/book.parallel.php).

Docker-образ для быстрой проверки примера находится в репозитории на [Docker Hub](https://hub.docker.com/r/andreytech/parallel-executor-php-example).

Содержание
----------

[](#содержание)

- [Требования](#%D0%A2%D1%80%D0%B5%D0%B1%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)
- [Установка](#%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0)
- [Класс `\App\ParallelExecutor`](#%D0%9A%D0%BB%D0%B0%D1%81%D1%81-appparallelexecutor)
    - [Методы класса](#%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D1%8B-%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%B0)
    - [Дополнительные параметры](#%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5-%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B)
- [Примеры](#%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80%D1%8B)
- [Автор](#%D0%90%D0%B2%D1%82%D0%BE%D1%80)
- [Лицензия](#%D0%9B%D0%B8%D1%86%D0%B5%D0%BD%D0%B7%D0%B8%D1%8F)

Требования
----------

[](#требования)

- PHP &gt;=7.2 Thread Safe.
- PHP-расширение [parallel](https://www.php.net/manual/ru/book.parallel.php).
- Произвольный автозагрузчик классов, реализующий стандарт [PSR-4](https://www.php-fig.org/psr/psr-4/).

Установка
---------

[](#установка)

Установка через composer:

```
$ composer require andrey-tech/parallel-executor:"^1.0"

```

или добавить

```
"andrey-tech/parallel-executor": "^1.0"

```

в секцию require файла composer.json.

Класс `\App\ParallelExecutor`
-----------------------------

[](#класс-appparallelexecutor)

### Методы класса

[](#методы-класса)

- `__construct(int $threads = 5, string $channelName = __CLASS__, int $channelСapacity = Channel::Infinite)`
    Конструктор класса.
    - `$threads` - количество создаваемых сред исполнения, как отдельных потоков PHP;
    - `$channelName` - имя создаваемого именованного канала;
    - `$channelСapacity` - емкость создаваемого именованного канала, МиБ (0 - небуферизированный канал)
- `execute(\Closure $closure, array $argv = []) :void`
    Отправляет на исполнение переданную задачу.
    - `$closure` - функция-замыкание, исполняющяя задачу;
    - `$argv` - аргументы функции.

### Дополнительные параметры

[](#дополнительные-параметры)

Дополнительные параметры устанавливаются через публичные статические свойства класса `\App\ParallelExecutor`:

СвойствоПо умолчаниюОписание`$autoloader`''Устанавливает файл автозагрузчика классов, подключаемый в каждой среде исполнения

Примеры
-------

[](#примеры)

Выполнение 10 задач в 3 параллельных потоках PHP с буферизированным каналом:

```
// Создаем исполнитель c 3-я отдельными параллельными потоками PHP и буферизированным каналом
$executor = new \App\ParallelExecutor(3);

$i = 0;
$startTime = microtime(true);
while ($i < 10) {
    $i++;
    printf("[%.4f]  execute" . PHP_EOL, microtime(true) - $startTime, $i);
    $executor->execute(
        function ($i) use ($startTime) {
            $sleep = random_int(1, 5);
            printf("[%.4f] %2d: Start sleeping {$sleep} s..." . PHP_EOL, microtime(true) - $startTime, $i);
            sleep($sleep);
            printf("[%.4f] %2d: DONE" . PHP_EOL, microtime(true) - $startTime, $i);
        },
        [ $i ]
    );
}
```

Результат:

```
[0.0000]  execute
[0.0001]  execute
[0.0002]  execute
[0.0002]  1: Start sleeping 5 s...
[0.0002]  execute
[0.0003]  2: Start sleeping 4 s...
[0.0003]  execute
[0.0003]  3: Start sleeping 5 s...
[0.0003]  execute
[0.0004]  execute
[0.0004]  execute
[0.0004]  execute
[0.0005]  execute
[4.0008]  2: DONE
[4.0010]  4: Start sleeping 4 s...
[5.0005]  3: DONE
[5.0005]  1: DONE
[5.0007]  5: Start sleeping 5 s...
[5.0008]  6: Start sleeping 1 s...
[6.0020]  6: DONE
[6.0022]  7: Start sleeping 4 s...
[8.0016]  4: DONE
[8.0018]  8: Start sleeping 1 s...
[9.0023]  8: DONE
[9.0025]  9: Start sleeping 5 s...
[10.0014]  5: DONE
[10.0015] 10: Start sleeping 2 s...
[10.0026]  7: DONE
[12.0017] 10: DONE
[14.0036]  9: DONE

```

Выполнение 10 задач в 3 параллельных потоках PHP с НЕ буферизированным каналом:

```
// Создаем исполнитель c 3-я отдельными параллельными потоками PHP и НЕ буферизированным каналом
$executor = new \App\ParallelExecutor(3, 'taskChannel', 0);

$i = 0;
$startTime = microtime(true);
while ($i < 10) {
    $i++;
    printf("[%.4f]  execute" . PHP_EOL, microtime(true) - $startTime, $i);
    $executor->execute(
        function ($i) use ($startTime) {
            $sleep = random_int(1, 5);
            printf("[%.4f] %2d: Start sleeping {$sleep} s..." . PHP_EOL, microtime(true) - $startTime, $i);
            sleep($sleep);
            printf("[%.4f] %2d: DONE" . PHP_EOL, microtime(true) - $startTime, $i);
        },
        [ $i ]
    );
}
```

Результат:

```
[0.0000]  execute
[0.0002]  1: Start sleeping 2 s...
[0.0002]  execute
[0.0003]  2: Start sleeping 3 s...
[0.0004]  execute
[0.0005]  3: Start sleeping 4 s...
[0.0005]  execute
[2.0008]  1: DONE
[2.0009]  4: Start sleeping 5 s...
[2.0010]  execute
[3.0006]  2: DONE
[3.0007]  5: Start sleeping 2 s...
[3.0007]  execute
[4.0007]  3: DONE
[4.0009]  6: Start sleeping 3 s...
[4.0010]  execute
[5.0012]  5: DONE
[5.0013]  7: Start sleeping 5 s...
[5.0014]  execute
[7.0013]  4: DONE
[7.0013]  6: DONE
[7.0015]  8: Start sleeping 5 s...
[7.0015]  execute
[7.0018]  9: Start sleeping 1 s...
[7.0018]  execute
[8.0020]  9: DONE
[8.0022] 10: Start sleeping 4 s...
[10.0017]  7: DONE
[12.0025] 10: DONE
[12.0025]  8: DONE

```

Автор
-----

[](#автор)

© 2020 andrey-tech

Лицензия
--------

[](#лицензия)

Данный код распространяется на условиях лицензии [MIT](./LICENSE).

###  Health Score

25

—

LowBetter than 37% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity11

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity50

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

2149d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/de69f7116b4bbba0435826347eeea01c7c6d831ae5ca5325ccf0686e7ddb92b4?d=identicon)[andrey-tech](/maintainers/andrey-tech)

---

Top Contributors

[![andrey-tech](https://avatars.githubusercontent.com/u/51994444?v=4)](https://github.com/andrey-tech "andrey-tech (9 commits)")

---

Tags

parallelphpphp-parallelphp-threadsphp7threadthreadsparallelthreads

### Embed Badge

![Health badge](/badges/andrey-tech-parallel-executor-php/health.svg)

```
[![Health](https://phpackages.com/badges/andrey-tech-parallel-executor-php/health.svg)](https://phpackages.com/packages/andrey-tech-parallel-executor-php)
```

###  Alternatives

[friendsofsymfony/comment-bundle

This Bundle provides threaded comment functionality for Symfony applications

460751.2k5](/packages/friendsofsymfony-comment-bundle)[veewee/composer-run-parallel

Run composer tasks in parallel

91748.2k13](/packages/veewee-composer-run-parallel)[recca0120/laravel-parallel

64116.7k](/packages/recca0120-laravel-parallel)[bluepsyduck/symfony-process-manager

A process manager for Symfony processes, able to run them in parallel.

10784.6k3](/packages/bluepsyduck-symfony-process-manager)[brlabrussia/parallel-stub

Provide parallel PHP extension stub

115.9k1](/packages/brlabrussia-parallel-stub)

PHPackages © 2026

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