Los documentos PHP son un poco confusos en este caso, así que lo estoy preguntando aquí. Dado este código de trabajador:Gearman & PHP: forma adecuada para que un trabajador envíe de vuelta un error
<?php
$gmworker= new GearmanWorker();
$gmworker->addServer();
$gmworker->addFunction("doSomething", "doSomethingFunc");
while($gmworker->work());
function doSomethingFunc()
{
try {
$value = doSomethingElse($job->workload());
} catch (Exception $e) {
// Need to notify the client of the error
}
return $value;
}
¿Cuál es la forma correcta de notificar al cliente de cualquier error que haya tenido lugar? ¿Falso retorno? Use GearmanJob :: sendFail()? Si es el último, ¿tengo que volver desde mi doSomethingFunc() después de llamar a sendFail()? ¿El valor de retorno debe ser el que devuelva sendFail()?
El cliente está utilizando GearmanClient :: returnCode() para comprobar si hay fallas. Además, simplemente el uso de "return $ value" parece funcionar, pero ¿debería usar GearmanJob :: sendData() o GearmanJob :: sendComplete() en su lugar?
Debe tenerse en cuenta que solo puede recuperar esta información con tareas normales ('GearmanClient :: do()'), no tareas de fondo 'GearmanClient :: doBackground()'). Ver también: http://stackoverflow.com/a/11631673/664108 –