Codebase list php-react-child-process / a02d7a95-53be-4032-a4df-48d88e9c9990/main examples / 01-stdio.php
a02d7a95-53be-4032-a4df-48d88e9c9990/main

Tree @a02d7a95-53be-4032-a4df-48d88e9c9990/main (Download .tar.gz)

01-stdio.php @a02d7a95-53be-4032-a4df-48d88e9c9990/mainraw · history · blame

<?php

use React\EventLoop\Factory;
use React\ChildProcess\Process;

require __DIR__ . '/../vendor/autoload.php';

if (DIRECTORY_SEPARATOR === '\\') {
    exit('Process pipes not supported on Windows' . PHP_EOL);
}

$loop = Factory::create();

$process = new Process('cat');
$process->start($loop);

$process->stdout->on('data', function ($chunk) {
    echo $chunk;
});

$process->on('exit', function ($code) {
    echo 'EXIT with code ' . $code . PHP_EOL;
});

// periodically send something to stream
$periodic = $loop->addPeriodicTimer(0.2, function () use ($process) {
    $process->stdin->write('hello');
});

// stop sending after a few seconds
$loop->addTimer(2.0, function () use ($periodic, $loop, $process) {
    $loop->cancelTimer($periodic);
    $process->stdin->end();
});

$loop->run();