(PECL gearman >= 0.5.0)
GearmanClient::addTaskHigh — 新增一個高優先級任務以並行執行
$function_name
,$workload
,$context
= null
,$unique_key
= null
新增一個高優先級任務,與其他任務並行執行。針對所有要並行執行的高優先級任務呼叫此方法,然後呼叫 GearmanClient::runTasks() 執行工作。高優先級任務會優先於一般或低優先級任務從佇列中選取。
function_name
Worker 要執行的已註冊函式
workload
要處理的序列化資料
context
與任務關聯的應用程式上下文
unique_key
用於識別特定任務的唯一 ID
一個 GearmanTask 物件,如果無法新增任務,則回傳 false
。
範例 #1 一個高優先級任務以及兩個一般任務
一個高優先級任務包含在兩個其他任務中。只有一個 worker 可用,因此任務會一次執行一個,高優先級任務會先執行。
<?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 "錯誤 " . $gmc->error() . "\n";
exit;
}
echo "完成\n";
function reverse_complete($task)
{
echo "完成: " . $task->unique() . ", " . $task->data() . "\n";
}
?>
上述範例會輸出類似以下的內容
COMPLETE: 2, Hello World! COMPLETE: 3, !dlroW olleH COMPLETE: 1, !dlroW olleH DONE