2024 年 PHP 日本會議

GearmanClient::addTaskStatus

(PECL gearman >= 0.5.0)

GearmanClient::addTaskStatus新增一個取得狀態的任務

說明

public GearmanClient::addTaskStatus(字串 $job_handle, 混合 $context = null): GearmanTask|false

用於向 Gearman 伺服器請求狀態資訊,伺服器會呼叫指定的狀態回呼函式(使用 GearmanClient::setStatusCallback() 設定)。

參數

job_handle

要取得狀態的工作的作業 handle

context

要傳遞給狀態回呼函式的資料,通常是指向陣列或物件的參考

回傳值

成功時回傳一個 GearmanTask 物件,失敗時回傳 false

範例

範例 #1 監控多個背景工作的完成進度

此範例中的 worker 人為地加入了延遲,以模擬長時間執行的處理程序。在此範例中,只有一個 worker 正在執行。

<?php

/* 建立 GearmanClient 物件 */
$gmclient= new GearmanClient();

/* 加入預設伺服器 */
$gmclient->addServer();

/* 啟動一些背景作業並儲存其操作代碼 */
$handles = array();
$handles[0] = $gmclient->doBackground("reverse", "Hello World!");
$handles[1] = $gmclient->doBackground("reverse", "!dlroW olleH");

$gmclient->setStatusCallback("reverse_status");

/* 輪詢伺服器以查看這些背景作業何時完成; */
/* 更好的方法是使用事件回呼 */
do
{
/* 使用 context 變數來追蹤已完成的任務數量 */
$done = 0;
$gmclient->addTaskStatus($handles[0], &$done);
$gmclient->addTaskStatus($handles[1], &$done);
$gmclient->runTasks();
echo
"已完成: $done\n";
sleep(1);
}
while (
$done != 2);

function
reverse_status($task, $done)
{
if (!
$task->isKnown())
$done++;
}

?>

上述範例會輸出類似以下的內容

Done: 0
Done: 0
Done: 0
Done: 0
Done: 0
Done: 0
Done: 0
Done: 0
Done: 0
Done: 0
Done: 0
Done: 0
Done: 1
Done: 1
Done: 1
Done: 1
Done: 1
Done: 1
Done: 1
Done: 1
Done: 1
Done: 1
Done: 1
Done: 1
Done: 2

另請參閱

新增註記

使用者貢獻的註記

此頁面沒有使用者貢獻的註記。
To Top