gearman+php 安装以及使用

Gearman是一个用来把工作委派给其他机器、分布式的调用更适合做某项工作的机器、并发的做某项工作在多个调用间做负载均衡、或用来在调用其它语言的函数的系统.

官方网站:http://gearman.org/

以下的操作均在ubuntu12.0下进行,其他操作系统均雷同。

1、gearman安装

安装依赖包

sudo apt-get install libboost-program-options-dev libevent-dev uuid-dev

截止笔者发表博文gearman最新稳定版本1.0..6:https://launchpad.net/gearmand/1.0/1.0.6/+download/gearmand-1.0.6.tar.gz

wget https://launchpad.net/gearmand/1.0/1.0.6/+download/gearmand-1.0.6.tar.gz

tar -zxvf gearmand-1.0.6.tar.gz

cd gearmand-1.0.6

./configure --prefix=/usr/local/gearmand

sudo make

sudo make install

如果出现下面错误提示:

sorry, unimplemented: Graphite loop optimizations can only be used if the libcloog-ppl0 package is installed

解决办法:修改Makefile,查找并去掉 floop-parallelize-all

启动gearmand

/usr/local/gearmand/sbin/gearmand -d

如果提示log文件/usr/local/gearmand/var/log/不存在,则新建

sudo mkdir -p /usr/local/gearmand/var/log/

sudo chmod 777 /usr/local/gearmand/var

下载php的gearman扩展

wget http://pecl.php.net/get/gearman-1.0.2.tgz

tar -zxvf gearman-1.0.2.tgz

cd gearman-1.0.2

安装libgearman

sudo apt-get install libgearman-dev

笔者的php安装在/usr/loal/php目录下,

/usr/local/php/bin/phpize

./configure --with-php-config=/usr/local/php/bin/php-config
sudo make

sudo make install

在文件夹/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/下会生成gearman的so文件,编辑php.ini加载gearman.so

vim /usr/local/php/etc/php.ini

添加

extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/gearman.so

笔者使用的服务器为nginx+php-fpm的模式,重启php-fpm即可

sudo kill -usr2 php-fpm-master-pid

查看phpinfo查看gearman是否加载

php -r "phpinfo();" | grep gearman

安装完毕。

2、gearman的使用

下图为官网上的一张示意图,可以很好的阐述组成gearman的三部分的分工。

由上图,我们可以很容易的发现gearman是由Client+job server+worker 组成。

Client:它提供各种编程语言(C,PHP,Perl...)的API,在gearman中作为请求的发起者。

Job Server:它将根据Client发来的请求为其找到一个可以执行这个请求的worker,并接受worker的回应并回应给Client。

Worker:它提供各种编程语言(C,PHP,Perl...)的API,在gearman中作为请求的真实回应者。

下面是一个php使用gearman的例子:

Client:client.php

<?php

// Create our client object
$client = new GearmanClient();

// Add a server
$client->addServer(); // by default host/port will be "localhost" & 4730

echo "Sending job\n";

// Send reverse job
$result = $client->doNormal("reverse", "Hello!");
if ($result) {
  echo "Success: $result\n";
}

Worker:worker.php

<?php

// Create our worker object
$worker = new GearmanWorker();

// Add a server (again, same defaults apply as a worker)
$worker->addServer();

// Inform the server that this worker can process "reverse" function calls
$worker->addFunction("reverse", "reverse_fn");

while (1) {
  print "Waiting for job...\n";
  $ret = $worker->work(); // work() will block execution until a job is delivered
  if ($worker->returnCode() != GEARMAN_SUCCESS) {
    break;
  }
}

// A much simple reverse function
function reverse_fn(GearmanJob $job) {
  $workload = $job->workload();
  echo "Received job: " . $job->handle() . "\n";
  echo "Workload: $workload\n";
  $result = strrev($workload);
  echo "Result: $result\n";
  return $result;
}

运行:

php worker.php &

php client.php

gearman+php 安装以及使用

时间: 2024-08-05 21:51:23

gearman+php 安装以及使用的相关文章

[Gearman] centos上Gearman的安装

一.简介 Gearman安装分2步,第1步是gearmand的安装,第2步是gearman的PHP扩展的安装. 第1步: 二.gearmand的安装 1.首先安装libdrizzle #yum install libdrizzle libdrizzle-devel 2.安装gearman(两种方法1.yum2.源码包).(c版的server) 1)yum安装 #rpm -ivh http://dl.iuscommunity.org/pub/ius/stable/Redhat/6/x86_64/e

centos上Gearman的安装

一.简介 Gearman安装分2步,第1步是gearmand的安装,第2步是gearman的PHP扩展的安装. 第1步: 二.gearmand的安装 1.首先安装libdrizzle #yum install libdrizzle libdrizzle-devel 2.安装gearman(两种方法1.yum2.源码包).(c版的server) 1)yum安装 #rpm -ivh http://dl.iuscommunity.org/pub/ius/stable/Redhat/6/x86_64/e

Linux中Gearman安装与使用,分布式消息队列(CentOS-6.5:gearmand-1.1.12)

1 Gearman简介 1.1 概况 Gearman是一个用来把工作委派给其他机器.分布式的调用更适合做某项工作的机器.并发的做某项工作在多个调用间做负载均衡.或用来在调用其它语言的函数的系统. 1.2 组成 Gearman是一个分发任务的程序架构,由三部分组成: 1)Gearman client:提供gearman client API给应用程序调用.API可以使用C,PHP,PERL,MYSQL UDF等待呢个语言,它是请求的发起者. 2)Gearman job server:将客户端的请求

pecl 安装amqp mongo imagick gearman yar yaf apc 扩展

#!/usr/bin/env bash sed -i "s/us\./cn\./g" /etc/apt/sources.list apt-get update ##安装nginx apt-get -y install nginx if [ "$?" != "0" ]; then echo "error! nginx is not installed correctly" exit 1; fi ##安装php apt-get -

Ubuntu gearman 搭建

近阶段一直在查看项目里所使用到的一些技术点,发现了gearman,于是就动手搞了下环境,下面是来自百度百科关于gearman的介绍: Gearman是一个用来把工作委派给其他机器.分布式的调用更适合做某项工作的机器.并发的做某项工作在多个调用间做负载均衡.或用来在调用其它语言的函数的系统. 可用于sso 分发连接,但有弊端就是占用系统资源较多,例如CPU.内存. 1.更新 sudo apt-get update wget https://launchpad.net/gearmand/1.2/1.

通过Gearman实现MySQL到Redis的数据同步

对于变化频率非常快的数据来说,如果还选择传统的静态缓存方式(Memocached.File System等)展示数据,可能在缓存的存取上会有很大的开销,并不能很好的满足需要,而Redis这样基于内存的NoSQL数据库,就非常适合担任实时数据的容器. 但是往往我们又有数据可靠性的需求,采用MySQL作为数据存储,不会因为内存问题而引起数据丢失,同时也可以利用关系数据库的特性实现很多功能. 所以就会很自然的想到是否可以采用MySQL作为数据存储引擎,Redis则作为Cache.而这种需求目前还没有看

转:尝试用Gearman实现分布式处理(PHP)

原文来自于http://blog.csdn.net/fdipzone/article/details/7166520 本文需要你已对Gearman有个大致了解. 顺便再推荐两篇参考文章http://hi.baidu.com/thinkinginlamp/blog/item/ff49972b9e7378f3e6cd40aa.html (学学Gearman)http://www.ibm.com/developerworks/cn/opensource/os-php-gearman/index.htm

centos安装gearman

centos安装gearman post by rocdk890 / 2012-8-4 1:11 Saturday linux技术 发表评论 今天公司让我在服务器上安装gearman,服务器环境是lamp,那gearman是什么?其实这个gearman是一个处理分布式过程通信的健壮系统.它提供了一个通用的应用程序框架,主要用来把任务转发给到其他机器或进程.使用Gearman 能让程序实现并行工作.负载均衡和跨语言调用.它能够用于不同类型的应用程序,从高可用的web站点到数据库复制传输. 系统:c

Gearman 安装使用教程

#安装运行依赖 yum install -y boost boost-devel libevent gperf libuuid libuuid-devel #下载最新版 Gearman wget --no-check-certificate https://launchpad.net/gearmand/1.2/1.1.12/+download/gearmand-1.1.12.tar.gz ./configure make && make install mkdir -p /usr/loca