Easily spawn processes and communicate with them using streams. Mainly build to be used together with react/event-loop.
composer.phar require christiaan/stream-process
$loop = \React\EventLoop\Factory::create();
$child = new StreamProcess('php someWorkerProcess.php');
$loop->addReadStream($child->getReadStream(), function($stream) {
$data = fgets($stream);
fwrite(STDOUT, $data);
});
$loop->addPeriodicTimer(1, function() {
pcntl_signal_dispatch();
});
pcntl_signal(SIGTERM, function() use($loop) {
$loop->stop();
// Cleanup before closing
exit(0);
});
fwrite($child->getWriteStream(), 'start');
$loop->run();
Not working on Windows because of this bug
Could possible be fixed by using files instead of direct streams.