English | 简体中文 | 繁體中文
查询

GearmanWorker::work()函数—用法及示例

「 启动 Gearman worker 进程并开始监听任务队列,当有任务到达时,worker 将执行相应的任务处理函数 」


函数名:GearmanWorker::work()

适用版本:GearmanWorker::work() 函数在 PHP 5 >= 5.3.0 及 PHP 7 中可用。

用法:GearmanWorker::work() 函数用于启动 Gearman worker 进程并开始监听任务队列,当有任务到达时,worker 将执行相应的任务处理函数。

语法:

public bool GearmanWorker::work ([ callable $callback [, int &$timeout ]] )

参数:

  • callback(可选):一个可调用的函数,用于处理任务。如果没有传递此参数,worker 将使用默认任务处理函数。
  • timeout(可选):一个整数,表示 worker 在没有任务时的超时时间(以毫秒为单位)。默认值为无限超时。

返回值:

  • 成功时返回 true,失败时返回 false。

示例:

<?php
// 创建 Gearman worker 对象
$worker = new GearmanWorker();

// 添加 Gearman 服务器
$worker->addServer('127.0.0.1', 4730);

// 设置任务处理函数
$worker->addFunction('reverse_string', 'reverseString');

// 定义任务处理函数
function reverseString($job)
{
    $workload = $job->workload();
    $result = strrev($workload);

    // 处理完任务后,返回处理结果
    return $result;
}

// 启动 worker 进程并监听任务队列
while ($worker->work()) {
    if ($worker->returnCode() != GEARMAN_SUCCESS) {
        echo "Worker failed: " . $worker->returnCode() . "\n";
        break;
    }
}
?>

在上面的示例中,我们创建了一个 Gearman worker 对象,并添加了 Gearman 服务器的连接信息。然后,我们使用 addFunction() 方法将任务处理函数 reverseString() 与任务名称 reverse_string 关联起来。在 reverseString() 函数中,我们将传入的任务载荷进行反转,并返回处理结果。最后,通过调用 work() 方法启动 worker 进程,并开始监听任务队列。当有任务到达时,worker 将自动调用相应的处理函数进行处理。

补充纠错
下一个函数: GearmanWorker::wait()函数
热门PHP函数
分享链接