Запуск рабочих Gearman в фоновом режиме

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

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

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

Обычно мне нужно было бы открыть два терминала, один для рабочего и один для клиента. Рабочий для рабочего становится "застревающим" в действии после выполнения php script.

Спасибо заранее.

Ответ 1

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

Здесь, как установить Supervisord

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

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

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

Затем вам необходимо обновить файл supervisor.conf, чтобы сообщить супервизору, какую команду вы хотите запустить как демон (конечно, это будет ваш рабочий-редуктор). Ниже приведен пример того, что вы добавили бы в ваш файл 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 теперь активен, и теперь вы можете запускать своего клиента-посредника через командную строку или ваш браузер.

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

Ответ 3

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

screen -d -m php worker.php