PHP process forking made easy.
This library will help you to fork process and manage it state.
composer require mkolecki/sub-processTo fork to sub-process first create SubProcess\Process instance and then call start() method.
To controll what new Process will do, you have to pass callable.
That callable will receive Process instance which has Channel to send() and read() messages between parrent and child process.
Example examples/02-channel-communication.php:
<?php
include __DIR__ . '/../vendor/autoload.php';
use SubProcess\Child;
use SubProcess\Process;
$process = new Process(function (Child $child) {
$channel = $child->channel();
$channel->send("Hello from child process!");
$channel->send(["You", " can ", "send even arrays!"]);
$object = new \stdClass();
$object->inFact = "you can send any";
$object->serialisable = ['value'];
$channel->send($object);
});
$process->start();
while (!$process->channel()->eof()) {
var_dump($process->channel()->read());
}
$exitStatus = $process->wait();
var_dump($exitStatus->code());$ php examples/02-channel-communication.phpOutput:
string(25) "Hello from child process!"
array(3) {
[0]=>
string(3) "You"
[1]=>
string(5) " can "
[2]=>
string(17) "send even arrays!"
}
object(stdClass)#5 (2) {
["inFact"]=>
string(16) "you can send any"
["serialisable"]=>
array(1) {
[0]=>
string(5) "value"
}
}
int(0)