Install the library with composer:
composer require symfony-bundles/fork
Create the fork service:
use SymfonyBundles\Fork;
$fork = new Fork\Fork();
Create a task that implements an interface SymfonyBundles\Fork\TaskInterface
.
For example:
namespace AppBundle\Task;
use SymfonyBundles\Fork\TaskInterface;
class DemoTask implements TaskInterface
{
public function execute()
{
echo "Hello World!\n";
}
}
Now that the task is created, you can execute her in a plurality processes:
use AppBundle\Task\DemoTask;
$task = new DemoTask();
$fork->attach($task)->run(4)->wait(); // 4 - this is number of subprocesses
And another example:
$task1 = new DemoTask();
$task2 = new DemoTask();
$task3 = new DemoTask();
$fork->attach($task1)->attach($task2)->attach($task3);
$fork->run(); // by default, the optimal number of subprocesses will be determined
$fork->wait();
If you call method wait
, the current process (main) will wait while all child processes will be finished.