LinuxParty

Inicio activadoInicio activadoInicio activadoInicio activadoInicio activado
 

Distribuye la carga de tus aplicaciones PHP con Gearman 🛠️

Gearman es una solución muy efectiva para descargar carga de las operaciones web y procesar tareas de manera eficiente y escalable. Con herramientas como GearmanManager, puedes gestionar tu infraestructura de procesamiento en segundo plano de forma sencilla y organizada.

Gearman es un framework open‑source para distribuir tareas de cómputo en varios procesos o servidores. Permite a tu aplicación web delegar tareas costosas a procesos en segundo plano, mejorando el rendimiento y la capacidad de respuesta (sitepoint.com, en.wikipedia.org).

¿Qué es Gearman?

Gearman centraliza el envío ("client"), distribución ("job server") y ejecución ("worker") de tareas. Fue originalmente creado por Brad Fitzpatrick en Perl y reescrito en C por Brian Aker y Eric Day (en.wikipedia.org). Usado por plataformas como Digg y Yahoo, puede procesar miles de tareas por segundo (sitepoint.com). Beneficios clave

  • Paralelización: varias tareas simultáneas.
  • Equilibrio de carga: se distribuyen entre múltiples workers.
  • Multilenguaje: clientes y workers pueden estar en PHP, Python, Perl, etc. (en.wikipedia.org).
  • Desacople: tareas pesadas (procesado de imágenes, envíos masivos de emails...) no bloquean peticiones web.

Instalación de Gearman

1. Servidor Gearman

En Debian/Ubuntu:

sudo apt-get install gearman-job-server libgearman-dev

O compílalo desde fuente:

wget https://launchpad.net/gearmand/trunk/0.8/+download/gearmand-0.8.tar.gz
tar xzf …
./configure && make && sudo make install
sudo ldconfig

2. Extensión PHP

En Ubuntu:

sudo apt-get install php‑gearman

O vía PECL:

pecl install gearman

# luego añade "extension=gearman.so" en php.ini

Verifica instalación:

<?php var_dump(gearman_version()); ?>

Ejemplo básico: cliente y worker

Worker (worker.php)

<?php
$worker = new GearmanWorker();
$worker->addServer('127.0.0.1', 4730);
$worker->addFunction('reversa', function($job) {
    return strrev($job->workload());
});
while ($worker->work());

Cliente (client.php)

<?php
$client = new GearmanClient();
$client->addServer('127.0.0.1', 4730);
echo $client->do('reversa', 'LinuxParty'), "\n";

Al ejecutar estos scripts, el output será:

yatniP xuniL

Este ejemplo demuestra cómo externalizar tareas sin bloquear el flujo web.

Casos reales y buenas prácticas

Procesado de imágenes

Un sistema web que genera miniaturas descompone el flujo así:

  • Usuario sube imagen.
  • Web App envía tarea "resize" al servidor Gearman.
  • Worker procesa la imagen y la almacena.
  • Página web puede notificar o refrescar gracias a una cola de trabajo.

Emails y notificaciones

Enviar emails en segundo plano reduce la latencia. El cliente envía la tarea y sigue atendiendo peticiones mientras los workers gestionan los envíos. GearmanManager: gestión avanzada de workers

GearmanManager es un proyecto PHP que:

  • Gestiona múltiples procesos worker.
  • Permite configuración mediante ini (número de workers, reinicios auto…).
  • Soporta PECL y PEAR.
  • Monitoriza cambios en el directorio de workers para reinicios dinámicos (brian.moonspot.net, github.com).

Configuración típica en manager.ini:

[GearmanManager]
worker_dir=./workers
count=5
max_worker_lifetime=3600
auto_update=1

[resize]
count=3

[email]
count=2

Flujo de trabajo resumido

Componente Acción principal
Cliente PHP Envía tarea al servidor Gearman
Servidor Gearman Distribuye tarea entre workers
Worker PHP Ejecuta la tarea y devuelve resultados
Cliente PHP Recupera el resultado según necesidad

No estás registrado para postear comentarios



Redes:



   

 

Suscribete / Newsletter

Suscribete a nuestras Newsletter y periódicamente recibirás un resumen de las noticias publicadas.

Donar a LinuxParty

Probablemente te niegues, pero.. ¿Podrías ayudarnos con una donación?


Tutorial de Linux

Filtro por Categorías