(PECL gearman >= 0.5.0)
GearmanClient::addTaskHigh — Añade una tarea de alta prioridad para ser ejecutada en paralelo
$function_name
, string $workload
[, mixed &$context
[, string $unique
]] ) : GearmanTaskAñade una tarea de alta prioridad para ser ejecutada en paralelo junto con otras tareas. Este método debe llamarse para todas las tareas de alta prioridad que se deben ejecutar en paralelo y entonces llamar a GearmanClient::runTasks() para realizar el trabajo. Tareas con una alta prioridad se seleccionarán de la cola antes de las que tienen prioridad normal o baja.
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 no se puedo añadir la tarea
Ejemplo #1 Una tarea de prioridad alta junto con dos tareas de prioridad normal
Se incluye una tarea de alta prioridad entre otras dos tareas. Sólo está disponible un trabajador, de modo que se ejecuta una única tarea cada vez y la tarea de alta prioridad se ejecuta primero.
<?php
# Creamos 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 esté completado
$gmc->setCompleteCallback("reverse_complete");
# Añade tareas, una de ellas de alta prioridad
$task= $gmc->addTask("reverse", "Hello World!", null, "1");
$task= $gmc->addTaskHigh("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: 2, Hello World! COMPLETE: 3, !dlroW olleH COMPLETE: 1, !dlroW olleH DONE