GearmanClient::addTaskHigh
(PECL gearman >= 0.5.0)
GearmanClient::addTaskHigh — Añade una tarea de alta prioridad para ser ejecutada en paralelo
Descripción
$function_name
, string $workload
[, mixed &$context
[, string $unique
]] )Añ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.
Parámetros
-
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
Valores devueltos
Un objeto GearmanTask o FALSE si no se puedo añadir la tarea
Ejemplos
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
Ver también
- GearmanClient::addTask() - Añade una tarea para ser ejecutada en paralelo
- GearmanClient::addTaskLow() - Añade una tarea de baja prioridad para ejecutar en paralelo
- GearmanClient::addTaskBackground() - Ejecuta una tarea en segundo plano para ser ejecutada en paralelo
- GearmanClient::addTaskHighBackground() - Añade una tarea de alta prioridad ejecutada en segundo plano y en paralelo
- GearmanClient::addTaskLowBackground() - Añade una tarea de baja prioridad en segundo plano para ser ejecutada en paralelo
- GearmanClient::runTasks() - Ejecuta una lista de tareas en paralelo