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();
}

Или трябва да добавя всичко това като задачи? Само малко объркан, предполагам.

Благодаря много. Ето как изглежда кодът, който извиква работника:

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