GearmanBundle не выполняет автоматически задания для Gearman и Symfony2

Я уверен, что это какая-то неправильная конфигурация, но я не могу найти то, что он просматривает в документации gearmanbundle и gearman.

Я настроил Gearman и PHP-расширение gearman и запустил их вместе с GearmanBundle от Symfony2.

Я могу настроить задания и отправить их воркеру, но воркер не выполняет их автоматически, а ждет меня, пока я не выполню команду app/console gearman:worker:execute.

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

Когда я запускаю эту команду, она работает нормально, вроде все в порядке.

Я запускаю свой демон gearman с неправильными аргументами или я где-то пропустил конфигурацию?

Или мне нужно сделать что-то вроде

foreach( $this->gearman->getWorkers() as $worker) {
  $worker->doWork();
}

Или я должен добавить все это в качестве задач? Просто немного запутался, я думаю.

Огромное спасибо. Вот как выглядит код, вызывающий worker:

foreach($photos as $photo){

    $payload = array(
        'tempBase64Data' => $photo->getTempBase64Data(),
        'path' => $photo->getPath(),
        'mime' => $photo->getMime(),
    );

    $jobIds[] = $this->gearman->doBackgroundJob(
        'imageWorker~writeFileToS3',
        json_encode($payload)
    );

}

person Pez    schedule 21.08.2014    source источник


Ответы (1)


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

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

person Pez    schedule 22.08.2014