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

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

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

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

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

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

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

Вот как установить 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 теперь активен, и теперь вы можете запустить своего ретранслятора через командную строку или в свой браузер.

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

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

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

 screen -d -m php worker.php