PHP Conference Japan 2024

GearmanClient::addTaskStatus

(PECL gearman >= 0.5.0)

GearmanClient::addTaskStatus添加任务以获取状态

描述

public GearmanClient::addTaskStatus(string $job_handle, mixed $context = null): GearmanTask|false

用于向 Gearman 服务器请求状态信息,这将调用指定的状态回调(使用 GearmanClient::setStatusCallback() 设置)。

参数

job_handle

要获取其状态的任务的作业句柄

context

要传递给状态回调的数据,通常是数组或对象的引用

返回值

一个 GearmanTask 对象或在失败时返回 false

范例

示例 #1 监视多个后台任务的完成情况

在本例中,在工作进程中引入了人工延迟来模拟长时间运行的进程。本例中只有一个工作进程正在运行。

<?php

/* 创建我们的对象 */
$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
{
/* 使用上下文变量跟踪已完成的任务数量 */
$done = 0;
$gmclient->addTaskStatus($handles[0], &$done);
$gmclient->addTaskStatus($handles[1], &$done);
$gmclient->runTasks();
echo
"Done: $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