Работает только один машинист - PullRequest
1 голос
/ 29 июля 2011

У меня есть рабочий, написанный на PHP, который что-то повторяет и спит несколько секунд.Я запустил два экземпляра этого работника, и когда я теперь несколько раз запускаю рулевого, чтобы выполнить эту работу, выполняется только один из рабочих (последний из которых я начал), но не другой, хотя клиент должен ждать, покаэтот работник закончил свою работу.Я что-то здесь не так делаю или это идея о том, как должен говорить машинист?

# cat ./testworker.php 
<?php

$Worker = new \GearmanWorker;
$Worker->addServers('127.0.0.1:4730');
$Worker->addFunction('test', 'work');
while ($Worker->work() || $Worker->returnCode() == GEARMAN_TIMEOUT) {
        if ($Worker->returnCode() != GEARMAN_SUCCESS)
                break;
}

function work()
{
        echo getmypid();
        sleep(1);
}

Затем я запустил работника в двух консолях с помощью команды

# php ./testworker.php

Затем я запустил механикачтобы выполнить работу пару раз:

# gearman -f test -s

Может ли быть так, что мне нужен параметр -t для демона gearman?Я работаю на OS-X.

# ps ax | grep gearman
4128  ??  Ss     0:00.02 /opt/local/bin/daemondo --label=gearmand --start-cmd /opt/local/sbin/gearman
4129  ??  S      0:00.04 /opt/local/sbin/gearmand -vv --port=4730 -u root --pid-file=/opt/local/var/r
4250  p5  S+     0:00.01 grep gearman

Кстати: как я могу изменить какие-либо параметры в процессе, контролируемом демоном?Я изменил /opt/local/etc/LaunchDaemons/org.macports.gearmand/org.macports.gearmand.plist, но я думаю, что мне нужно выполнить запятую, которая перечитывает список.

...