Supprimer des documents en ligne de commande
Introduction
Il est possible, via un accès au serveur api en ligne de commande, de passer une commande pour supprimer un ou plusieurs fichiers de type BinaryContent sans passer par l'api ou l'application front-end. La commande supporte le traitement séquentiel et parallèle pour améliorer les performances lors de suppressions massives.
Commande
La commande à passer est la suivante depuis le conteneur mdf-api
Arguments
La commande pour supprimer des binary dans MDF accepte plusieurs arguments. L'entièreté des arguments peut être retrouvé sur l'aide de la commande accessible par
| Nom de l'argument | Abbréviation | Obligatoire | Valeur par défaut | Détail |
|---|---|---|---|---|
| ids | Ø | Non | Ø | Liste des identifiants (UUID) des contenus binaires à supprimer. Mutuellement exclusif avec l'option --file. Si aucun identifiant n'est fourni et que l'option --file n'est pas utilisée, une erreur sera levée |
| agentIdentifier | ai | Oui | Ø | Identifier (et non id) de l'agent exécutant la suppression. Cet agent doit avoir les droits de suppression sur les contenus binaires concernés |
| file | f | Non | Ø | Chemin vers un fichier contenant les identifiants (UUID) à supprimer, un par ligne ou séparés par des espaces. Mutuellement exclusif avec l'argument ids. Le fichier doit être lisible et contenir uniquement des UUIDs valides |
| parallel | p | Non | false | Active le traitement parallèle des suppressions. Améliore significativement les performances pour les suppressions massives. Si l'extension n'est pas disponible, une erreur sera levée |
| workers | w | Non | 4 | Nombre de processus parallèles à utiliser pour le traitement. Minimum 1, maximum 8. Le nombre effectif de workers sera limité par le nombre d'éléments à supprimer si celui-ci est inférieur au nombre de workers demandé |
Comportement
La commande supprime les contenus binaires dans l'ordre suivant :
- Vérification de l'existence du contenu binaire
- Vérification des droits de suppression de l'agent
- Suppression de l'index de recherche Elasticsearch
- Suppression du contenu binaire de la base de données
Si la suppression de l'index de recherche échoue, la suppression en base de données ne sera pas effectuée pour garantir la cohérence des données.
En mode parallèle, les identifiants sont répartis en chunks entre les différents workers. Chaque worker traite sa portion de manière indépendante et retourne les résultats via une communication inter-processus.
Résultats
La commande affiche pour chaque suppression :
- Le statut (SUCCESS ou FAILURE)
- L'identifiant du contenu binaire
- Le message de résultat
En mode verbeux (option --verbose), un résumé est affiché en fin d'exécution avec :
- Le nombre de suppressions réussies
- Le nombre de suppressions échouées
- La liste des éléments non supprimés en base de données en raison d'un échec de suppression de l'index de recherche
Exemples
Suppression d'un contenu binaire unique :
php bin/console mdm:content:delete-binary --agentIdentifier="agent-identifier" "binary-content-uuid"
Suppression de plusieurs contenus binaires depuis un fichier en mode séquentiel :
php bin/console mdm:content:delete-binary --agentIdentifier="agent-identifier" --file="/path/to/ids.txt"
Suppression de plusieurs contenus binaires en mode parallèle avec 8 workers :
php bin/console mdm:content:delete-binary --agentIdentifier="agent-identifier" --file="/path/to/ids.txt" --parallel --workers=8
Suppression en mode parallèle avec affichage du résumé détaillé :
php bin/console mdm:content:delete-binary --agentIdentifier="agent-identifier" --file="/path/to/ids.txt" --parallel -v