MemcacheQ: cola de mensajes mediante Memcached
MemcacheQ es una interesante implementación de Memcache que permite realizar una cola de mensajes que luego podremos utilizar en nuestras aplicaciones de formas variadas, por ejemplo, si tenemos un proceso largo que queremos dividir y realizar partes en background, podemos crear una cola de mensajes e ir añadiendo distintas tareas para luego ir recuperándolas una a una.
MemcacheQ permite crear distintas colas y cuando se recupera un valor de la cola se borrará de esta. Imaginemos que tenemos un blog en el que cuando se publica un post se deben realizar una serie de tareas complejas, y no queremos tener a WordPress o Drupal o lo que usemos esperando para dar el OK de post publicado, lo que haríamos sería añadir un mensaje en la cola y luego con una tarea usando el cron, ir ejecutándolas una a una:
/* Método de publicación */
// Conectamos al servidor
$memcache_obj = memcache_connect('memcacheq_host', 21201);
// Añadimos el mensaje a la cola
memcache_set($memcache_obj, /* id_cola */ 'tareas_del_blog', /* mensaje */ $id_post, 0, 0);
memcache_close($memcache_obj);
/* Método del cron */
// Conectamos al servidor
$memcache_obj = memcache_connect('memcacheq_host', 21201);
$id_post = memcache_get($memcache_obj, 'tareas_del_blog');
tarea_enorme($id_post);
memcache_close($memcache_obj);
Vía / PDPDeveloper.org
Vaya, no sabÃa que existÃa 🙂
Yo hace no demasiado programé algo similar, aunque en mi caso estaba más adaptado al proyecto y, sobretodo, era más flexible ya que no sacaba la tarea de la cola siempre, sino cuando las tareas eran del tipo “One Time”, pq habÃa tareas recurrentes tipo “cron” (ejecutate cada hora, cada dÃa, etc).
La verdad es que tu idea me parece bastante acertada, porque hay muchas tareas recurrentes. Supongo que se podrÃa generar una cola especÃfica para cada una de ellas: “tareas_hora”, “tareas_dia”, “tareas_semana” y cuando se lee una tarea (y se saca de la cola, se podrÃa volver a introducir en ella, y asà realizar lo que tu hacÃas.
Saludos