(PECL gearman >= 0.5.0)
GearmanClient::addTaskLow — Añade una tarea de baja prioridad para ejecutar en paralelo
$function_name
, string $workload
[, mixed &$context
[, string $unique
]] ) : GearmanTaskAñade una tarea de baja prioridad en segundo plano para ejecutar en paralelo junto con otras tareas. Debe llamarse a este método para todas las tareas que se ejecutan en paralelo y entonces llamar a GearmanClient::runTasks() para realizar el trabajo. Tareas con una baja prioridad se seleccionarán de la cola después de las tareas de prioridad normal o alta.
function_name
Función registrada que ejecutará el worker
workload
Datos serializados a ser procesados
context
Aplicación context a asociar con la tarea
unique
ID único para identificar una tarea en particular
Un objeto GearmanTask o FALSE
si la tarea no puede
ser añadida.
Ejemplo #1 Una tarea de baja prioridad junto con dos tareas de prioridad normal
Se incluye una tarea de prioridad baja junto a otras dos tareas. Se dispone de un solo trabajador, de modo que únicamente se ejecuta una tarea por vez y la tarea de baja prioridad la última.
<?php
# Crea el cliente gearman
$gmc= new GearmanClient();
# Añade el servidor de trabajos por defecto
$gmc->addServer();
# Establece la llamada de retorno para cuando el trabajo ha terminado
$gmc->setCompleteCallback("reverse_complete");
# Añade tareas, una de ellas de baja prioridad
$task= $gmc->addTask("reverse", "Hello World!", null, "1");
$task= $gmc->addTaskLow("reverse", "!dlroW olleH", null, "2");
$task= $gmc->addTask("reverse", "Hello World!", null, "3");
if (! $gmc->runTasks())
{
echo "ERROR " . $gmc->error() . "\n";
exit;
}
echo "DONE\n";
function reverse_complete($task)
{
echo "COMPLETE: " . $task->unique() . ", " . $task->data() . "\n";
}
?>
El resultado del ejemplo sería algo similar a:
COMPLETE: 3, !dlroW olleH COMPLETE: 1, !dlroW olleH COMPLETE: 2, Hello World! DONE