(PECL gearman >= 0.5.0)
GearmanClient::addTaskLow — Add a low priority task to run in parallel
$function_name
, string $workload
[, mixed &$context
[, string $unique
]] )Adds a low priority background task to be run in parallel with other tasks. Call this method for all the tasks to be run in parallel, then call GearmanClient::runTasks() to perform the work. Tasks with a low priority will be selected from the queue after those of normal or low priority.
function_name
Die registrierte Funktion, die der Worker ausführen soll
workload
Serialisierte Daten, die verarbeitet werden sollen
context
Der Anwendungskontext der mit einem Task verknüpft werden soll
unique
Eine eindeutige ID, die einen bestimmten Task identifiziert
A GearmanTask object or FALSE
if the task could not be added.
Beispiel #1 A low priority task along with two normal tasks
A low priority task is included among two other tasks. A single worker is available, so that tasks are run one at a time, with the low priority task run last.
<?php
# create the gearman client
$gmc= new GearmanClient();
# add the default job server
$gmc->addServer();
# set the callback for when the job is complete
$gmc->setCompleteCallback("reverse_complete");
# add tasks, one of which is low priority
$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";
}
?>
Das oben gezeigte Beispiel erzeugt eine ähnliche Ausgabe wie:
COMPLETE: 3, !dlroW olleH COMPLETE: 1, !dlroW olleH COMPLETE: 2, Hello World! DONE