phasty / process
PHP 异步任务执行
0.2.3
2016-03-09 05:00 UTC
Requires
- phasty/events: 0.1.*
- phasty/log: 0.1.*
- phasty/stream: 0.2.*
Requires (Dev)
- phpunit/phpunit: 4.0.*
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. 获取结果代码
- 双向链接(向子进程发送命令)
4. 获取停止原因(正常、信号如段错误等)