Aller au contenu

Commande app:articles:purge-trashed

Référence de la commande Console qui purge définitivement les articles en corbeille depuis plus de 30 jours. Elle est déclenchée automatiquement une fois par jour par le composant Symfony Scheduler et reste exécutable à la main.

Source : src/Command/PurgeTrashedArticlesCommand.php.

Synopsis

bin/console app:articles:purge-trashed

La commande ne prend ni argument ni option (au-delà des options globales standard de la console Symfony).

Comportement

À chaque exécution, la commande :

  1. calcule un seuil à 30 jours avant l'instant courant ;
  2. récupère les articles dont le statut est Trashed et dont la date d'entrée en corbeille (trashedAt) est antérieure à ce seuil ;
  3. supprime chacun de ces articles. La clé étrangère article_revision.article_id étant en ON DELETE CASCADE, l'historique de révisions de chaque article supprimé part avec lui ;
  4. affiche le nombre d'articles purgés et renvoie le code de sortie 0 (succès).

La suppression est définitive : il n'y a pas de restauration possible après purge. Un article en corbeille depuis moins de 30 jours n'est pas touché.

Sortie et code de retour

Élément Valeur
Message de succès [OK] <n> article(s) purgé(s).
Code de sortie 0 (Command::SUCCESS) en cas de succès

Le nombre <n> reflète le total d'articles supprimés lors de l'exécution (0 si aucun n'a dépassé le seuil).

Planification automatique (Scheduler)

La commande porte l'attribut #[AsPeriodicTask(frequency: '1 day')] du composant Symfony Scheduler, en plus de son #[AsCommand]. Cet attribut l'enregistre comme tâche périodique quotidienne sur le schedule default — sans déclaration supplémentaire ni planificateur système externe (cron).

En production, ce schedule est consommé par un worker Messenger :

bin/console messenger:consume scheduler_default

C'est ce worker qui déclenche la commande au rythme défini par l'attribut. La planification est donc versionnée avec le code : modifier la fréquence se fait dans src/Command/PurgeTrashedArticlesCommand.php, pas dans une configuration serveur séparée.

Vérifier l'enregistrement de la tâche

bin/console debug:scheduler
confirme que PurgeTrashedArticlesCommand est enregistrée comme tâche périodique sur le schedule default.

Exécution manuelle

La commande reste exécutable directement, indépendamment du Scheduler — par exemple pour purger immédiatement ou dans un script de maintenance :

bin/console app:articles:purge-trashed

L'effet est identique à un déclenchement planifié : seuls les articles en corbeille depuis plus de 30 jours sont supprimés.

Voir aussi