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

GearmanClient::returnCode()函数—用法及示例

「 获取上一个 Gearman 任务的返回码 」


函数名:GearmanClient::returnCode()

适用版本:GearmanClient 类在 PHP 5 >= 5.3.0, PHP 7 才可用。

用法:GearmanClient::returnCode() 函数用于获取上一个 Gearman 任务的返回码。

返回码是一个整数,用于表示任务的执行状态。返回码的含义如下:

  • GEARMAN_SUCCESS (0): 任务成功完成。
  • GEARMAN_IO_WAIT (1): 需要等待 I/O 操作完成。
  • GEARMAN_SHUTDOWN (2): Gearman 服务器正在关闭,无法接受新的任务。
  • GEARMAN_NO_JOBS (3): 服务器上没有可执行的任务。
  • GEARMAN_GRAB_JOB_UNIQ (4): 服务器有一个唯一任务可用,需要使用 GearmanClient::grabJob() 来获取。
  • GEARMAN_NO_ACTIVE_FDS (5): 服务器没有可用的活动连接。
  • GEARMAN_JOB_EXISTS (6): 任务已经存在,不允许重复提交。
  • GEARMAN_ECHO_DATA_CORRUPTION (7): 传输数据损坏,需要重新发送。
  • GEARMAN_NEED_WORKLOAD_FN (8): 服务器需要客户端提供一个有效的负载回调函数。
  • GEARMAN_PAUSE (9): 任务被暂停。
  • GEARMAN_UNKNOWN_STATE (10): 未知的任务状态。

示例:

// 创建一个 Gearman 客户端对象
$client = new GearmanClient();

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

// 向 Gearman 服务器提交一个任务
$client->doBackground('task_name', 'task_data');

// 获取上一个任务的返回码
$returnCode = $client->returnCode();

// 根据返回码判断任务的执行状态
if ($returnCode == GearmanClient::GEARMAN_SUCCESS) {
    echo '任务成功完成';
} elseif ($returnCode == GearmanClient::GEARMAN_IO_WAIT) {
    echo '等待 I/O 操作完成';
} elseif ($returnCode == GearmanClient::GEARMAN_SHUTDOWN) {
    echo 'Gearman 服务器正在关闭';
} else {
    echo '未知的返回码';
}

注意:在使用 GearmanClient::returnCode() 函数之前,需要先执行一个 Gearman 任务(如 doBackground())来获取返回码。否则,返回码将是未定义的。

补充纠错
热门PHP函数
分享链接