moduleHandler = $moduleHandler; $this->lock = $lock; $this->state = $state; parent::__construct(); } /** * {@inheritdoc} */ protected function configure() { $this ->setName('cron:execute') ->setDescription($this->trans('commands.cron.execute.description')) ->addArgument( 'module', InputArgument::IS_ARRAY | InputArgument::OPTIONAL, $this->trans('commands.common.options.module') ) ->setAliases(['croe']); } /** * {@inheritdoc} */ protected function execute(InputInterface $input, OutputInterface $output) { $modules = $input->getArgument('module'); if (!$this->lock->acquire('cron', 900.0)) { $this->getIo()->warning($this->trans('commands.cron.execute.messages.lock')); return 1; } if ($modules === null || in_array('all', $modules)) { $modules = $this->moduleHandler->getImplementations('cron'); } foreach ($modules as $module) { if (!$this->moduleHandler->implementsHook($module, 'cron')) { $this->getIo()->warning( sprintf( $this->trans('commands.cron.execute.messages.module-invalid'), $module ) ); continue; } try { $this->getIo()->info( sprintf( $this->trans('commands.cron.execute.messages.executing-cron'), $module ) ); $this->moduleHandler->invoke($module, 'cron'); } catch (\Exception $e) { watchdog_exception('cron', $e); $this->getIo()->error($e->getMessage()); } } $this->state->set('system.cron_last', REQUEST_TIME); $this->lock->release('cron'); $this->getIo()->success($this->trans('commands.cron.execute.messages.success')); return 0; } }