2011-11-21 15 views
11

Estoy usando Ubuntu Natty con PHP 5.3.8. Acabo de hacer que Gearman trabaje en mi servidor.Running Gearman Workers en el fondo

Hice algunas pruebas con algunas secuencias de comandos que obtuve del Manual de PHP, y todo funciona bien.

Sin embargo, me gustaría saber si hay una forma de que pueda ejecutar al trabajador en segundo plano, y también supervisarlo para que cuando cambie a una situación de trabajador múltiple, pueda hacer un seguimiento de cuántos trabajadores Tengo trabajo.

Normalmente, tendría que abrir dos terminales, una para el trabajador y otra para el cliente. El uno para el trabajador se vuelve 'atascado' en efecto después de que se ejecuta el script php.

Gracias de antemano.

Respuesta

19

Ok. Encontré una solución a mi problema anterior. Implica utilizar Supervisord para desamonizar al o los trabajadores del engranaje.

continuación se explica cómo instalar Supervisord

apt-get install python-setuptools 
easy_install supervisor 
echo_supervisord_conf > /etc/supervisord.conf 

Aquí es cómo configurarlo (primero obtener un guión de inicio de here y guardarlo en /etc/init.d/supervisord), a continuación, haga lo siguiente:

chmod +x /etc/init.d/supervisord 
update-rc.d -f supervisord defaults 

A continuación, necesita actualizar su archivo supervisor.conf para decirle a supervisord qué comando desea ejecutar como daemon (por supuesto, este sería su trabajador de engranaje). A continuación se muestra solo una muestra de lo que agregaría a su archivo supervisord.conf, deberá actualizarlo a su propia situación específica.

[program:gearman] 
command=/usr/bin/php php_gearman_worker.php 
numprocs=1 
directory=/root/gearman 
stdout_logfile=/root/gearman/supervisord.log 
environment=GEARMAN_USER=gearman 
autostart=true 
autorestart=true 
user=gearman 
stopsignal=KILL 

Cuando haya terminado, a continuación, iniciar supervisord decir /etc/init.d/supervisord start.

Una vez hecho esto, su trabajador de Gearman ahora está activo y ahora puede ejecutar su cliente de gearman a través de la línea de comandos o con su navegador.

Espero que esto ayude.

+2

'apt-get install supervisor' y crear'/etc/supervisor/conf.d/gearman.conf' con solo '[program: gearman]' y 'command =/usr/bin/php php_gearman_worker.php' era todo lo que necesitaba. –

5

Para los trabajadores de fondo se puede utilizar GearmanManager por Brian Luna https://github.com/brianlmoon/GearmanManager

+0

Muchas gracias, pero he encontrado otra forma más viable usando Supervisord. –

+0

GearMan monitor y Gearman Manager juntos deberían hacer el truco. https://github.com/yugene/Gearman-Monitor – rjha94

5

Otra opción es utilizar screen para poner la tarea del trabajador en una cáscara individual:

screen -d -m php worker.php 
+0

gracias. – pregmatch