PHP Conference Japan 2024

GearmanClient::doStatus

(PECL gearman >= 0.5.0)

GearmanClient::doStatus取得執行中任務的狀態

說明

public GearmanClient::doStatus(): 陣列

返回執行中任務的狀態。這應該在重複呼叫 GearmanClient::doNormal() 之間使用。

參數

此函式沒有參數。

返回值

一個陣列,表示完成百分比,以分數形式給出,第一個元素是分子,第二個元素是分母。

範例

範例 #1 取得長時間執行工作的狀態

此範例中的 worker 在處理要反轉的字串期間添加了人為延遲。每次延遲後,它會呼叫 GearmanJob::status(),然後用戶端會接收該狀態。

<?php

echo "開始\n";

# 建立客戶端物件。
$gmclient= new GearmanClient();

# 加入預設伺服器 (localhost)。
$gmclient->addServer();

echo
"傳送工作\n";

# 傳送反轉工作
do
{
$result = $gmclient->doNormal("reverse", "Hello!");

# 檢查各種回傳封包和錯誤。
switch($gmclient->returnCode())
{
case
GEARMAN_WORK_DATA:
break;
case
GEARMAN_WORK_STATUS:
# 取得目前的工作狀態
list($numerator, $denominator)= $gmclient->doStatus();
echo
"狀態: $numerator/$denominator 完成\n";
break;
case
GEARMAN_WORK_FAIL:
echo
"失敗\n";
exit;
case
GEARMAN_SUCCESS:
break;
default:
echo
"回傳值: " . $gmclient->returnCode() . "\n";
exit;
}
}
while(
$gmclient->returnCode() != GEARMAN_SUCCESS);

echo
"成功: $result\n";

?>

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

Starting
Sending job
Status: 1/6 complete
Status: 2/6 complete
Status: 3/6 complete
Status: 4/6 complete
Status: 5/6 complete
Status: 6/6 complete
Success: !olleH

另請參閱

新增註釋

使用者貢獻的註釋

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