Ejecuta una tarea en segundo plano

# GearmanClient::doBackground

(PECL gearman >= 0.5.0)

GearmanClient::doBackground — Ejecuta una tarea en segundo plano

### Descripción

public function GearmanClient::doBackground(string `$function`, string `$workload`, ?string `$unique` = `null`): string

Ejecuta una tarea en segundo plano, devuelve el gestor de trabajos que podrá ser utilizado para recuperar el estado de la tarea en curso.

### Parámetros

`function`
  Una función registrada que el trabajador va a ejecutar
`workload`
  Datos serializados a analizar
`unique`
  Un identificador único utilizado para identificar una tarea particular

### Valores devueltos

El gestor de trabajos para la tarea enviada.

### Ejemplos

Ejemplo #1 Envía y supervisa un trabajo en segundo plano

El agente de este ejemplo tiene un retraso artificial introducido para simular un trabajo cuya ejecución tarda mucho tiempo. El script del cliente verifica periódicamente el estado del trabajo en curso.

    <?php

    /* Crea un cliente */
    $gmclient= new GearmanClient();

    /* Añade un servidor por omisión */
    $gmclient->addServer();

    /* Ejecuta el cliente */
    $job_handle = $gmclient->doBackground("reverse", "this is a test");

    if ($gmclient->returnCode() != GEARMAN_SUCCESS)
    {
      echo "Código de retorno erróneo\n";
      exit;
    }

    $done = false;
    do
    {
       sleep(3);
       $stat = $gmclient->jobStatus($job_handle);
       if (!$stat[0]) // la tarea es conocida por lo que no está terminada
          $done = true;
       echo "Ejecución : " . ($stat[1] ? "true" : "false") . ", numerador : " . $stat[2] . ", denominador : " . $stat[3] . "\n";
    }
    while(!$done);

    echo "hecho !\n";

    ?>

Resultado del ejemplo anterior es similar a:

    Ejecución : true, numerador : 3, denominador : 14
    Ejecución : true, numerador : 6, denominador : 14
    Ejecución : true, numerador : 9, denominador : 14
    Ejecución : true, numerador : 12, denominador : 14
    Ejecución : false, numerador : 0, denominador : 0
    hecho !

### Ver también

- GearmanClient::doNormal() - Ejecuta una tarea y devuelve el resultado
- GearmanClient::doHigh() - Ejecuta una sola tarea con prioridad alta
- GearmanClient::doLow() - Ejecuta una sola tarea con prioridad baja
- GearmanClient::doHighBackground() - Ejecuta una tarea con prioridad alta en segundo plano
- GearmanClient::doLowBackground() - Ejecuta una tarea en prioridad baja en segundo plano

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open