(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