2024 年 PHP 日本大会

GearmanClient::doStatus

(PECL gearman >= 0.5.0)

GearmanClient::doStatus获取正在运行的任务的状态

描述

public GearmanClient::doStatus(): array

返回正在运行的任务的状态。这应该在重复的 GearmanClient::doNormal() 调用之间使用。

参数

此函数没有参数。

返回值

一个数组,表示完成百分比(以分数表示),其中第一个元素是分子,第二个元素是分母。

示例

示例 #1 获取长时间运行作业的状态

此示例中的工作器在处理要反转的字符串期间添加了人工延迟。每次延迟后,它都会调用 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
"RET: " . $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