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