GearmanBundle不会自动为Gearman和Symfony2执行作业

时间:2014-08-21 01:04:21

标签: symfony gearman

我很肯定这是一些错误的配置,但我似乎无法通过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)
    );

}

1 个答案:

答案 0 :(得分:1)

经过更多研究后,我发现这是GearmanBundle的预期功能。除非您运行执行控制台命令,否则它不会自动执行作业。

我打算使用Supervisor来确保这些工作人员一直在运行。