Drupal 7 viene con excelente mecanismo de colas que permite encolar tareas a realizar. Estas tareas serán realizadas durante la ejecución del cron de Drupal. Para conocer más detalles se puede consultar este magnifico artículo de Philip Norton: Drupal 7 Queues API donde explica detalladamente qué son, para qué usarlas, tipos de cola disponibles y como extender las implementaciones de colas existentes.
Es la parte de extender las colas lo que me parece más interesante. Gracias la orientación a objetos es posible extender una implementación de una cola cambiando algún detalle que nos interese sin tener que escribir la implementación completa. Como se muestra en el artículo referenciado puede fácilmente construirse una cola que sea una pila, una cola con retardo o una cola que escribe en el log todas las operaciones que realiza.
Resumo los pasos para usar una cola propia:
- Crear una clase que extienda una de las clases existentes que implementan el interfaz DrupalQueueInterface. Alternativamente siempre se puede escribir una nueva clase completa que implemente dicho interfaz (o alguno de sus subinterfaces). Dicha clase deberá ser declarada, como es lógico, en el fichero .info del módulo al que pertenezca.
- Establecer la variable queue_class_MI_NOMBRE_DE_COLA al nombre de la clase que acabamos de crear. Es la forma de indicarle a Drupal que cuando se pida una instancia de la cola con ese nombre devuelva una instancia de nuestra implementación propia en vez de la implementación de la cola por defecto.