Blog

batch api
11/09/2020

Exemple de Batch api

Suppression des taxonomies dupliquées

Le traitement par lots (Batch processing en anglais) est souvent un aspect important de tout projet Drupal et plus encore, lorsque nous devons traiter de grands volumes de données.

L'un des avantages principaux du traitement par lots réside dans le fait de pouvoir traiter un nombre important de données par petites étapes (chunk) qui se traduisent chacune par une requête indépendante au lieu d'une seule grosse requête pour traiter toutes les données à la fois. Cela nous permet de réaliser un traitement de masse sans devoir utiliser toutes les ressources de mémoire disponibles de notre serveur.

Le fait de diviser un traitement en petits morceaux, peut servir à éviter le temps allouer à l'exécution de nos scripts PHP sans que ça soit atteint, tout en informant nos utilisateurs sur l'avancée de notre traitement.

L'utilisation de la batch API en Drupal s'applique aux cas suivants:

  • Importer ou migrer des données depuis ou vers une source externe
  • Nettoyer des données
  • Appliquer des opérations précises sur plusieurs nodes à la fois
  • Communiquer avec une API externe

Exemple : Suppression des taxonomies dupliqués après la migration

Pour cet exemple on va créer un module pour supprimer les taxonomies dupliquées, voici la structure du module:

Sur la partie taxonomie, on a un vocabulaire Catégories qui contient des termes dupliqués qu’on souhaite supprimer.

On a créer un formulaire pour pouvoir choisir le vocabulaire  dont on souhaite supprimer les duplications.

Après le choix du vocabulaire on clique sur le bouton Delete duplicated terms, le batch s'exécute pour supprimer les taxonomies dupliqués.

Et on obtient la liste suivante des termes non dupliqués  :

Voici le code source du fichier BatchForm.php