userCleanupService = $userCleanupService; } protected static $defaultName = 'app:user:cleanup'; protected static $defaultDescription = 'Удаляет пользователей с только ROLE_USER после истечения времени жизни кукисов'; protected function configure(): void { $this ->setDescription(self::$defaultDescription) ->addOption('dry-run', null, InputOption::VALUE_NONE, 'Показать, какие пользователи будут удалены, без фактического удаления') ; } protected function execute(InputInterface $input, OutputInterface $output): int { $io = new SymfonyStyle($input, $output); $dryRun = $input->getOption('dry-run'); if ($dryRun) { $io->note('Режим проверки (dry-run). Пользователи не будут удалены.'); } $io->title('Очистка пользователей'); try { if ($dryRun) { $io->note('Режим проверки (dry-run). Пользователи не будут удалены.'); // В dry-run режиме просто показываем сколько будет удалено // Но для этого нужно добавить метод в сервис или просто запустить и показать результат } $deletedCount = $this->userCleanupService->cleanupExpiredUsers(); if ($dryRun) { $io->success(sprintf('Найдено пользователей для удаления: %d', $deletedCount)); } else { $io->success(sprintf('Успешно удалено пользователей: %d', $deletedCount)); } return Command::SUCCESS; } catch (\Exception $e) { $io->error(sprintf('Ошибка при выполнении очистки: %s', $e->getMessage())); $io->error($e->getTraceAsString()); return Command::FAILURE; } } }