Jderusse\Warmup\Console\WarmupCommand::execute PHP Method

execute() protected method

protected execute ( Symfony\Component\Console\Input\InputInterface $input, Symfony\Component\Console\Output\OutputInterface $output )
$input Symfony\Component\Console\Input\InputInterface
$output Symfony\Component\Console\Output\OutputInterface
    protected function execute(InputInterface $input, OutputInterface $output)
    {
        if (!extension_loaded('Zend OPcache')) {
            throw new \RuntimeException('You have to enable opcache to use this commande');
        }
        if (!(bool) ini_get('opcache.enable_cli')) {
            throw new \RuntimeException('You have to enable the opcache extension');
        }
        $opcacheDir = ini_get('opcache.file_cache');
        if (empty($opcacheDir)) {
            throw new \RuntimeException('You have to define a file_cache to use');
        }
        if (!is_dir($opcacheDir)) {
            throw new \RuntimeException(sprintf('You have to create the "%s" directory', $opcacheDir));
        }
        if ((int) ini_get('opcache.file_update_protection') > 0) {
            $output->writeln('<warning>You should set the `opcache.file_update_protection` to 0 in order to cache recently updated files</warning>');
        }
        $composer = $this->getComposer();
        $reader = new ChainReader(array_merge([new OptimizedReader($composer->getConfig())], array_map(function ($extra) {
            return new DirectoryReader($extra);
        }, $input->getArgument('extra'))));
        $compiler = new PhpServerCompiler();
        foreach ($reader->getClassmap() as $file) {
            try {
                $compiler->compile($file);
                if ($output->getVerbosity() >= OutputInterface::VERBOSITY_VERBOSE) {
                    $output->writeln(sprintf('<info>Compiled file <comment>%s</comment></info>', $file));
                }
            } catch (\Throwable $e) {
                $output->writeln(sprintf('<error>Failed to compile file <comment>%s</comment></error>', $file));
            }
        }
    }