(PECL gearman >= 0.5.0)
GearmanClient::addTaskHigh — 添加一个高优先级任务以并行运行
$function_name
,$workload
,$context
= null
,$unique_key
= null
将一个高优先级任务添加到要与其他任务并行运行的队列中。对于所有要并行运行的高优先级任务,调用此方法,然后调用 GearmanClient::runTasks() 来执行工作。高优先级任务将在队列中优先于正常或低优先级任务被选中。
function_name
工作进程要执行的已注册函数
workload
要处理的序列化数据
context
与任务关联的应用程序上下文
unique_key
用于标识特定任务的唯一 ID
一个 GearmanTask 对象,如果无法添加任务,则为 false
。
范例 #1 一个高优先级任务和两个普通任务
一个高优先级任务包含在另外两个任务中。只有一个工作进程可用,所以任务一次运行一个,高优先级任务先运行。
<?php
# 创建 gearman 客户端
$gmc= new GearmanClient();
# 添加默认作业服务器
$gmc->addServer();
# 设置作业完成时的回调
$gmc->setCompleteCallback("reverse_complete");
# 添加任务,其中一个是高优先级
$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";
}
?>
上面的例子将输出类似以下的内容
COMPLETE: 2, Hello World! COMPLETE: 3, !dlroW olleH COMPLETE: 1, !dlroW olleH DONE