/** * @param string $class * @param LoopInterface $loop * @param array $options * @return PromiseInterface */ public static function createFromClass($class, LoopInterface $loop, array $options = []) { $options = array_merge(self::$defaultOptions, $options); return \WyriHaximus\React\ChildProcess\Pool\detectCoreCount($loop, $options)->then(function ($coreCount) use($class, $loop, $options) { $options[Options::SIZE] = $coreCount; $processes = []; for ($i = 0; $i < $coreCount; $i++) { $processes[] = Resolver::resolve($i, '%s')->then(function ($command) use($class) { return \React\Promise\resolve(new ClassName($class, ['cmdTemplate' => $command])); }); } return \React\Promise\all($processes)->then(function ($processes) use($loop, $options) { return \React\Promise\resolve(new Fixed(new ArrayList($processes), $loop, $options)); }); }); }
/** * @param $address * @param Process $childProcess * @return Process */ function rebuildProcess($address, Process $childProcess) { return Resolver::resolve($address, getProcessPropertyValue('cmd', $childProcess))->then(function ($cmd) use($childProcess) { return \React\Promise\resolve(new Process($cmd, getProcessPropertyValue('cwd', $childProcess), getProcessPropertyValue('env', $childProcess), getProcessPropertyValue('options', $childProcess))); }); }