如何从Gearman Queue中获取批量数据?

时间:2019-06-28 17:33:22

标签: php gearman

我需要从Gearman中的队列中获取一批数据,如果出现问题,请将其返回到队列中。那么,有什么办法可以使工作程序中的任务很少?

我正在使用此代码从队列中执行任务。 如果遇到错误,我将返回exit(-1);将任务返回给Gearman Queue。

$worker= new GearmanWorker();
$worker->addServer('127.0.0.1', '4730');
$worker->addFunction("test_task", "processing");

while (1)
{
  $worker->work();
  if ($worker->returnCode() != GEARMAN_SUCCESS){
      echo "return_code: " . $gmworker->returnCode() . "\n";
      break;
  }
}

function processing($job)
{
    try{
        echo "processing";
        throw new Exception('Error here');
    }catch(\Exception $e){
        file_put_contents(__DIR__.'/error.log', $e->getMessage(), FILE_APPEND);
        exit(-1);
    }
}

所以问题是,在processing函数中,如何承担几个任务而不是一个任务。 我正在使用它来将数据保存到数据库,我需要分批发送数据,而不是按行发送数据到db,但是如果db返回错误或没有响应,我需要将任务返回给Gearman。

0 个答案:

没有答案