gearman的使用

   1. 启动

$ gearmand --log-file gearmand.log --listen 127.0.0.1 --port=4730 --verbose=INFO&
[1] 20996

启动成功会看到生成一个如下格式的结果

[数量编号] 进程编号 

可能会报错 没有 gearmand.log  可以根据具体的报错目录创建相应的文件及目录

需要根据报错的具体目录进行创建和授权

mkdir -p  /usr/local/var/log/
cd  /usr/local/var/log/
touch gearmand.log
cd /usr/local
chmod -R 777 ./var

2.  运行worker

worker.php

<?php
$worker = new GearmanWorker();
$worker->addServer();
$worker->addFunction("job" ,"job_function");
while ($worker->work());
function job_function($job){
    echo $job->workload();
    return strlen(strtolower($job->workload()));
}
?>

执行

php worker.php

3. 运行client

client.php 使用addTaskrunTasks 方法配合

<?php
$client = new GearmanClient(); //创建一个客户端
$client->addServer('127.0.0.1', 4730); //添加一个job服务
//设置任务完成时的回调函数
$client->setCompleteCallback(function($task) {
    echo $task->data(), "\n"; //获取由worker返回的数据
});

//计算1到500的累加和
//添加五个任务到队列
$client->addTask('job', json_encode(array(1, 100)));
$client->addTask('job', json_encode(array(100, 200)));
$client->addTask('job', json_encode(array(200, 300)));
$client->addTask('job', json_encode(array(300, 400)));
$client->addTask('job', json_encode(array(400, 500)));

//运行队列中的任务,do系列不需要runTask()
$client->runTasks();
?>

或者 直接使用 do 方法

<?php
$client = new GearmanClient(); //创建一个客户端
$client->addServer('127.0.0.1', 4730); //添加一个job服务
$client->do('job','hello');
?>

执行

php client.php

然后客户端的任务就被执行了

4. 关闭gearmand服务

kill -9  启动时的进程号
# 什么 你不知道进程号? 试试下面的命令
lsof -i:4730

猜你喜欢

转载自blog.csdn.net/wujiangwei567/article/details/81750172