Skip to content

Commit a9a6aa6

Browse files
committed
Updated the README.md file.
1 parent 8f28d30 commit a9a6aa6

File tree

1 file changed

+63
-2
lines changed

1 file changed

+63
-2
lines changed

README.md

Lines changed: 63 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,66 @@
11
# Symfony Process Manager
22

3-
[![Latest Stable Version](https://poser.pugx.org/bluepsyduck/symfony-process-manager/v/stable)](https://packagist.org/packages/bluepsyduck/symfony-process-manager) [![License](https://poser.pugx.org/bluepsyduck/symfony-process-manager/license)](https://packagist.org/packages/bluepsyduck/symfony-process-manager) [![Build Status](https://travis-ci.com/BluePsyduck/symfony-process-manager.svg?branch=master)](https://travis-ci.com/BluePsyduck/symfony-process-manager) [![codecov](https://codecov.io/gh/BluePsyduck/symfony-process-manager/branch/master/graph/badge.svg)](https://codecov.io/gh/BluePsyduck/symfony-process-manager)
3+
[![Latest Stable Version](https://poser.pugx.org/bluepsyduck/symfony-process-manager/v/stable)](https://packagist.org/packages/bluepsyduck/symfony-process-manager)
4+
[![License](https://poser.pugx.org/bluepsyduck/symfony-process-manager/license)](https://packagist.org/packages/bluepsyduck/symfony-process-manager)
5+
[![Build Status](https://travis-ci.com/BluePsyduck/symfony-process-manager.svg?branch=master)](https://travis-ci.com/BluePsyduck/symfony-process-manager)
6+
[![codecov](https://codecov.io/gh/BluePsyduck/symfony-process-manager/branch/master/graph/badge.svg)](https://codecov.io/gh/BluePsyduck/symfony-process-manager)
47

5-
TBD
8+
This package provides a simple process manager class to be able to execute multiple processes with a specified limit
9+
of parallel processes. The class expects the processes to use the [Symfony Process](https://github.com/symfony/process)
10+
component.
11+
12+
## Usage
13+
14+
The usage of the process manager is straight forward and best explained with an example.
15+
16+
```php
17+
<?php
18+
use BluePsyduck\SymfonyProcessManager\ProcessManager;
19+
use Symfony\Component\Process\Process;
20+
21+
$numberOfParallelProcesses = 4; // The number of processes to execute in parallel.
22+
$pollInterval = 100; // The interval to use for polling the processes, in milliseconds.
23+
24+
$processManager = new ProcessManager($numberOfParallelProcesses, $pollInterval);
25+
26+
// Add some processes
27+
// Processes get executed automatically once they are added to the manager.
28+
// If the limit of parallel processes is reached, they are placed in a queue and wait for a process to finish.
29+
$processManager->addProcess(new Process('ls -l'));
30+
$processManager->addProcess(new Process('ls -l'));
31+
32+
// Wait for all processes to finish
33+
$processManager->waitForAllProcesses();
34+
35+
36+
```
37+
38+
## Callbacks
39+
40+
The process manager allows for some callbacks to be specified, which get called depending on the state of a process.
41+
42+
* **processStartCallback:** Triggered before a process is started.
43+
* **processFinishCallback:** Triggered when a process has finished.
44+
* **processSuccessCallback:** Triggered when a processes has finished with an exit code of 0.
45+
* **processFailCallback:** Triggered when a processes has failed with an exit code other than 0.
46+
47+
_Note:_ Each process will trigger either the `processSuccessCallback` or the `processFailCallback` depending of its exit
48+
code. The `processFinishCallback` will always be triggered afterwards, ignoring the exit code.
49+
50+
Each callback gets the process instance which triggered the event passed as only parameter. Here is an example of
51+
setting a `processStartCallback`:
52+
53+
```php
54+
<?php
55+
use BluePsyduck\SymfonyProcessManager\ProcessManager;
56+
use Symfony\Component\Process\Process;
57+
58+
$processManager = new ProcessManager();
59+
60+
$processManager->setProcessStartCallback(function (Process $process): void {
61+
echo 'Starting process: ' . $process->getCommandLine();
62+
});
63+
64+
$processManager->addProcess(new Process('ls -l'));
65+
$processManager->waitForAllProcesses();
66+
```

0 commit comments

Comments
 (0)