我需要从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。