Работающие работники Gearman в фоновом режиме - PullRequest
12 голосов
/ 22 ноября 2011

Я использую Ubuntu Natty с PHP 5.3.8.Я только что заставил Gearman работать на моем сервере.

Я провел несколько тестов с некоторыми сценариями, получил руководство по PHP и все работает нормально.

Однако я хотел бы знать, еслиесть способ запустить работника в фоновом режиме, а также отслеживать его, чтобы при переходе в ситуацию с несколькими работниками я мог отслеживать, сколько у меня рабочих.

ОбычноМне пришлось бы открыть два терминала, один для рабочего и один для клиента.Тот, что для работника, становится «застрявшим» в силе после выполнения сценария php.

Заранее спасибо.

Ответы [ 3 ]

19 голосов
/ 08 декабря 2011

Хорошо.Я нашел решение моей предыдущей проблемы.Он включает в себя использование Supervisord для деамонизации рабочих (-ий) gearman.

Вот как установить Supervisord

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

Вот как его настроить (сначала получите скрипт инициализации из здесь и сохраните его в /etc/init.d/supervisord), затем выполните следующие действия:

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

Затем вам нужно обновить файл supervisor.conf, чтобы сообщить supervisord, какую команду вы хотите запустить в качестве демона (конечно,Это был бы ваш рабочийНиже приведен лишь пример того, что вы бы добавили в файл supervisord.conf, вам необходимо обновить его в соответствии с вашей конкретной ситуацией.

[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

Когда вы закончите, запустите супервизор, т. Е. /etc/init.d/supervisord start.

После того, как вы это сделаете, ваш рабочий Gearman теперь активен, и теперь вы можете запустить клиента Gearman черезкомандной строки или с помощью браузера.

Надеюсь, это поможет.

5 голосов
/ 15 мая 2013

Другой вариант - использовать screen, чтобы поместить рабочую задачу в отдельную оболочку:

screen -d -m php worker.php
5 голосов
/ 08 декабря 2011

Для фоновых работников вы можете использовать GearmanManager от Brian Moon https://github.com/brianlmoon/GearmanManager

...