(PECL gearman >= 0.5.0)
GearmanClient::addTaskHigh — Añade una tarea de alta prioridad para ser ejecutada en paralelo
$function_name
,$workload
,$context
= null
,$unique_key
= null
Añade una tarea de alta prioridad para ser ejecutada en paralelo con otras tareas. Esta método debe ser llamado para que todas las tareas se ejecuten simultáneamente, luego GearmanClient::runTasks() debe ser llamado para realizar el trabajo. Las tareas con alta prioridad serán seleccionadas de la cola antes que las de prioridad más 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_key
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 alta prioridad junto con dos tareas normales
Se añade una tarea de alta prioridad junto con otras dos tareas. Un solo agente está disponible, de forma que las tareas se ejecutan una a una, con la de alta prioridad en primer lugar.
<?php
# crea el cliente Gearman
$gmc= new GearmanClient();
# añade el servidor por defecto
$gmc->addServer();
# establece el retorno cuando la tarea está completada
$gmc->setCompleteCallback("inverse_complete");
# añade tareas, una de ellas con alta prioridad
$task= $gmc->addTask("inverse", "Bonjour le monde!", null, "1");
$task= $gmc->addTaskHigh("inverse", "!ednom el ruojnoB", null, "2");
$task= $gmc->addTask("inverse", "Bonjour le monde!", null, "3");
if (! $gmc->runTasks())
{
echo "ERROR " . $gmc->error() . "\n";
exit;
}
echo "Hecho\n";
function inverse_complete($task)
{
echo "Completada : " . $task->unique() . ", " . $task->data() . "\n";
}
?>
El resultado del ejemplo sería algo similar a:
Completada : 2, Bonjour le monde! Completada : 3, !ednom el ruojnoB Completada : 1, !ednom el ruojnoB Hecho