(PECL gearman >= 0.5.0)
GearmanClient::addTaskLow — 添加一个低优先级任务以并行运行
$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->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";
}
?>
以上示例将输出类似以下内容
COMPLETE: 3, !dlroW olleH COMPLETE: 1, !dlroW olleH COMPLETE: 2, Hello World! DONE