phasty/process

PHP 异步任务执行

0.2.3 2016-03-09 05:00 UTC

This package is not auto-updated.

Last update: 2024-09-14 16:36:55 UTC


README

允许您在另一个PHP进程中执行任何作业,并在整个执行过程中从子进程获取反馈

// Child process code:
use Phasty\process\Child\CallableClass;
class ChildProcess extends CallableClass {
    public $property = "A";
    public function doAsyncJob($arg1, $arg2) {
        $this->trigger("doneJob", (object)[ "result" => $arg1 . $arg2  . $this->property ]);
    }
}

和父进程代码

use Phasty\Stream\StreamSet;
use Phasty\Process\Child\Controller;

$process = new Controller(ChildProcess::getClass());
/*
  or you can use instance of class ChildProcess with predefined state like this:
  $childJob = new ChildProcess;
  $childJob->property = "B";
  $process = new Controller($childJob);
 */

$process->on("start", function () {
    echo "Child process started\n";
});

$process->on("stop", function () {
    echo "Child process stopped\n";
});

$process->on("doneJob", function ($event) {
    echo "Got result from child: " . $event->getData()->result . "\n";
});

$process->doAsyncJob("foo", "bar");

StreamSet::instance()->listen();
echo "stopped\n";

执行后,您应该看到

Child process started
Got result from child: foobarA
Child process stopped
stopped

在子对象中,如果在父进程中捕获到错误或信号(包括SIGTERM、SIGFAULT等)时,您可以在父进程中接收“error”事件

即将推出

1. 使用 $process->kill() 杀死进程

2. 获取结果代码

  1. 双向链接(向子进程发送命令)

4. 获取停止原因(正常、信号如段错误等)