上面的範例讀取
if (!$stat[0]) // 工作是已知的,所以尚未完成
我認為註解是錯誤的,它應該讀作「工作是未知的,所以它已完成」。
祝您安好,
Jan
(PECL gearman >= 0.5.0)
GearmanClient::jobStatus -- gearman_job_status — 取得背景工作的狀態
物件導向風格(方法)
取得給定工作控制代碼的背景工作狀態。狀態資訊將指定工作是否已知、工作目前是否正在執行以及完成百分比。
job_handle
Gearman 伺服器分配的工作控制代碼
一個包含與提供的 job_handle 對應的工作狀態資訊的陣列。第一個陣列元素是一個布林值,指示工作是否已知,第二個是一個布林值,指示工作是否仍在執行,第三個和第四個元素分別對應完成百分比的分數的分子和分母。
範例 #1 監控長時間執行的背景工作的狀態
<?php
/* 建立我們的物件 */
$gmclient= new GearmanClient();
/* 新增預設伺服器 */
$gmclient->addServer();
/* 執行反向用戶端 */
$job_handle = $gmclient->doBackground("reverse", "this is a test");
if ($gmclient->returnCode() != GEARMAN_SUCCESS)
{
echo "錯誤的回傳碼\n";
exit;
}
$done = false;
do
{
sleep(3);
$stat = $gmclient->jobStatus($job_handle);
if (!$stat[0]) // 工作是已知的,所以尚未完成
$done = true;
echo "執行中: " . ($stat[1] ? "true" : "false") . ",分子: " . $stat[2] . ",分母: " . $stat[3] . "\n";
}
while(!$done);
echo "完成!\n";
?>
上面的範例將輸出類似以下的內容
Running: true, numerator: 3, denomintor: 14 Running: true, numerator: 6, denomintor: 14 Running: true, numerator: 9, denomintor: 14 Running: true, numerator: 12, denomintor: 14 Running: false, numerator: 0, denomintor: 0 done!
上面的範例讀取
if (!$stat[0]) // 工作是已知的,所以尚未完成
我認為註解是錯誤的,它應該讀作「工作是未知的,所以它已完成」。
祝您安好,
Jan
@Jan
if (!$stat[0]) // 工作是已知的,所以尚未完成
我相信是正確的。我的理解是,如果 $stat[0] 回傳任何非 false 的值,則工作目前正在執行,因此我們尚未完成。但是,如果我們找不到 $stat[0](即:工作控制代碼不再存在),則工作已完成。
--Richard