Skip to content

Boostrap process

You can execute a process before any other process with a bootstrap process.

Bootstrap process can be added with ParallelProcessesApplication::addProcess(), and should be an instance of BootstrapProcessInterface.

You can use BootstrapProcess, who implements BootstrapProcessInterface, instead of Process.

You can add this process when you want, before calling ParallelProcessesApplication::run(): before normal process, or after, it does not matter.

Bootstrap process failure

If a bootstrap process fail, normal processes will not be executed.

In this case, tear down processes will be executed.

<?php

use Steevanb\ParallelProcess\{
    Console\Application\ParallelProcessesApplication,
    Process\BootstrapProcess,
    Process\Process
};

(new ParallelProcessesApplication())
    ->addProcess(new BootstrapProcess(['bootstrap', 'process', '#1']))
    ->addProcess(new Process(['normal', 'process']))
    ->addProcess(new BootstrapProcess(['bootstrap', 'process', '#2']))
    ->run(new ArgvInput($argv));

Typo in BootstrapProcess class name before 1.1.0

Before 1.1.0, BootstrapProcess class name contains a typo: it was BoostrapProcess.

It has been fixed in 1.1.0: a new BootstrapProcess class has been created, and BoostrapProcess has been depreciated.

Tear down process

You can execute a process after all other processes with a tear down process.

Tear down process can be added with ParallelProcessesApplication::addProcess(), and should be an instance of TearDownProcessInterface.

You can use TearDownProcess, who implements TearDownProcessInterface, instead of Process.

You can add this process when you want, before calling ParallelProcessesApplication::run(): before normal process, or after, it does not matter.

Tear down process execution rule

The tear down processes will always be executed, whether the previous processes succeeded or failed.

<?php

use Steevanb\ParallelProcess\{
    Console\Application\ParallelProcessesApplication,
    Process\Process,
    Process\TearDownProcess
};

(new ParallelProcessesApplication())
    ->addProcess(new TearDownProcess(['tear', 'down', 'process', '#1']))
    ->addProcess(new Process(['normal', 'process']))
    ->addProcess(new TearDownProcess(['tear', 'down', 'process', '#2']))
    ->run(new ArgvInput($argv));