Skip to content

Easily spawn processes and communicate with them using streams.

License

Notifications You must be signed in to change notification settings

christiaan/stream-process

Repository files navigation

StreamProcess

Build Status

Easily spawn processes and communicate with them using streams. Mainly build to be used together with react/event-loop.

Installation

composer.phar require christiaan/stream-process

Usage

$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();

Known issues

Not working on Windows because of this bug

Could possible be fixed by using files instead of direct streams.

About

Easily spawn processes and communicate with them using streams.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages