Рабочих Gearman в фоновом режиме

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

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

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

обычно мне нужно было бы открыть два терминала, один для рабочий и один для клиента. Тот, который для рабочего, становится "застрявшим" после выполнения PHP-скрипта.

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

3 ответов


Ok. Я нашел решение своей предыдущей проблемы. Это связано с помощью Supervisord для deamonize работника gearman(ы).

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

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

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

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

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

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

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

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


для фоновых работников Вы можете использовать GearmanManager Брайана Муна https://github.com/brianlmoon/GearmanManager


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

screen -d -m php worker.php