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
Interesante estudio sobre comparativa de sentencias en PHP5 que obtienen el mismo resultado, para conocer cual de ellas es la más rápida. Por ejemplo: es más rápido concatenar una cadena a una variable usando el punto (.) que incluyéndo la variable entre comillas dobles, para expresiones regulares es más rápido usar preg_match que eregi, es 8 veces más rápido usar explode que split. También es una buena referencia para saber como hacer lo mismo de distintas formas. Pero lo que más me ha sorprendido es que comparando con PHP4 las expresiones regulares se han vuelto más lentas (casi 7 veces más rápido en PHP4 que en PHP5), lo cual me hace pensar que o bien es debido a una mejora que completa las expresiones regulares, o antes no se hacÃan muy bien, porque ir a peor no tiene mucho sentido.
Jaws es un CMS en PHP con el cual podremos crear nuestros propios sitios web.
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