Я использую 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