wizaplace/process

launch multi process concurrency

1.0.0 2019-02-06 07:26 UTC

This package is auto-updated.

Last update: 2024-04-12 07:52:39 UTC


README

Installation

composer require wizaplace/process

Usage

use Wizaplace\Process\AsyncProcess;
use Wizaplace\Process\MultiProcess;
use Wizaplace\Process\ProcessEvent;
use Symfony\Component\Process\Process;

$successCallback = function (Process $process, $startTime, $finishTime) {
    echo $process->getOutput();
};

$processEventSuccess = new ProcessEvent(ProcessEvent::EVENT_SUCCESS, $successCallback);

$process1 = new AsyncProcess(new Process(['ls', '/tmp']));
$process1->addProcessEvent($processEventSuccess);

$process2 = new AsyncProcess(new Process(['ls', '/home']));
$process2->addProcessEvent($processEventSuccess);

$multiProcess = new MultiProcess();
$multiProcess
    ->addAsyncProcess($process1)
    ->addAsyncProcess($process2)
;

$multiProcess->run();

Using Event

event list:

  • process start
  • process failed
  • process finish successful
use Wizaplace\Process\AsyncProcess;
use Wizaplace\Process\MultiProcess;
use Wizaplace\Process\ProcessEvent;
use Symfony\Component\Process\Process;

$successCallback = function (Process $process, $startTime, $finishTime) {
    echo $process->getOutput();
};

$failedCallback = function (Process $process, $startTime, $finishTime) {
    echo $process->getErrorOutput();
};

$processEventSuccess = new ProcessEvent(ProcessEvent::EVENT_SUCCESS, $successCallback);
$processEventFailed = new ProcessEvent(ProcessEvent::EVENT_FAILED, $failedCallback);

$process1 = new AsyncProcess(new Process(['ls', '/t11mp']));
$process1
    ->addProcessEvent($processEventSuccess)
    ->addProcessEvent($processEventFailed)
;

$process2 = new AsyncProcess(new Process(['ls', '/home']));
$process2
    ->addProcessEvent($processEventSuccess)
    ->addProcessEvent($processEventFailed)
;

$multiProcess = new MultiProcess();
$multiProcess
    ->addAsyncProcess($process1)
    ->addAsyncProcess($process2)
;

$multiProcess->run();