protected function doExecute(\SplObjectStorage $process_group, ImporterInterface $importer, SourceInterface $source, $num_processes, $config) { $script_path = DEVOUR_COMMAND_START_DIR . '/batch.php'; do { $this->limitProcess($process_group, $num_processes); if ($importer->getTransporter()->runInNewProcess()) { $args = ['php', $script_path, 'transport', $config, $source]; $builder = new ProcessBuilder($args); $process = $builder->getProcess(); $process->start(); $process_group->attach($process); return; } else { $stream = $importer->transport($source); $args = ['php', $script_path, 'parse', $config, $source, $stream->getMetadata('uri')]; } $builder = new ProcessBuilder($args); $process = $builder->getProcess(); $process->start(); $process_group->attach($process); } while ($importer->getTransporter()->progress($source) != ProgressInterface::COMPLETE); }