Рабочих 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