Сигурен съм, че това е някаква грешна конфигурация, но изглежда не мога да намеря какво търси в документите на 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)
);
}