wizaplace/process

启动多进程并发

1.0.0 2019-02-06 07:26 UTC

This package is auto-updated.

Last update: 2024-09-12 08:38:38 UTC


README

安装

composer require wizaplace/process

使用

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

使用事件

事件列表

  • 进程启动
  • 进程失败
  • 进程成功完成
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();