函数名: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())来获取返回码。否则,返回码将是未定义的。