我很肯定这是一些错误的配置,但我似乎无法通过gearmanbundle和gearman docs找到它的内容。
我已经设置了Gearman和Gearman PHP扩展程序,并让它们与Symfony2的GearmanBundle一起运行。
我可以设置作业并将其发送给工作人员,但是工作人员不会自动执行它们,而是在我运行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)
);
}
答案 0 :(得分:1)
经过更多研究后,我发现这是GearmanBundle的预期功能。除非您运行执行控制台命令,否则它不会自动执行作业。
我打算使用Supervisor来确保这些工作人员一直在运行。