linux

Gearman后台任务调用方法

1. 安装:

(1) Cent OS:
yum -y install gearmand

(2) PHP 扩展:
pecl install libgearman-debvel
pecl install gearman

2. 涉及角色:

后台任务涉及3中角色:

(1) 任务队列服务器:
监听网络,接受接入的任务请求
存储任务数据,以便恢复

(2) 客户端: 发送任务请求

(3) Worker: 实际执行任务的进程

3. 使用方法:

任务队列服务为后台进程,不需要编写程序。

(1) 客户端使用方法:

a. 初始化客户端,并连接gearmand服务器:

$client = new GearmanClient();
$client->addServer( $host, $port ); // 默认值: $host = ‘127.0.0.1’, $port = 4730

b. 发送同步任务请求: 客户端会等待后台任务完成

$result = $client->doNormal( ‘任务名’, ‘参数值’ ); // 任务名称 必须 跟worker中注册的任务名 相同。

c. 发送后台任务: 任务发送成功,函数即返回

$client->doBackground( ‘任务名’, ‘参数值’ ); //

d. 后台任务优先级: 三种 low, normal, hign

doBackground, doHignBackground, doLowBackground

f. 前台任务优先级:
doNormal, doLow, doHign
(2) Worker实现:

a. 初始化:

$worker= new GearmanWorker();
$worker->addServer(); // 默认值: $host = ‘127.0.0.1’, $port = 4730

b. 注册任务:

$worker->addFunction(“reverse”, “my_reverse_function”); // 任务名 函数名
$worker->addFunction(“read_db”, “my_read_db”);

function my_reverse_function( $data ) {
// …..
}

// 其它任务

c. 执行任务:

while ($worker->work());

Leave a Reply

Your email address will not be published. Required fields are marked *