gearmand

gearmand的简单介绍:(任务分发器
PHP 的 Gearman 库能把工作分发给一组机器。Gearman 会对作业进行排队并少量分派作业,而将那些复杂的任务分发给为此任务预留的机器。这个库对 Perl、Ruby、C、Python 及 PHP 开发人员均可用,并且还可以运行于任何类似 UNIX® 的平台上,包括 Mac OS X、 Linux® 和 Sun Solaris。

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

简单示意图:
gearmand

client:任务发起者

job:任务分配者

worker:任务处理者

支持 mysql,pq,sqlit,brizzle,memcachedb做持久化存储

可开启多个进程,支持failover(自动故障转移)

都可以有多个

 

1.安装依赖包:

yum install -y boost boost-devel gcc gcc44 gcc-c++ libevent libevent-devel uuid-c++ uuid-c++-devel uuid-php uuid-dce-devel uuid-dce

2.安装e2fsprogs (必须用源码安装,yum安装的不好使)

     tar zxvf e2fsprogs-1.41.14.tar.gz 



    cd e2fsprogs-1.41.14



    ./configure –enable-elf-shlibs



    make



    make install



    cp -r lib/uuid/ /usr/include/



    cp -rf lib/libuuid.so* /usr/lib

3. 安装gearmand

    tar zxvf gearmand-0.33.tar.gz



    cd gearmand-0.33



    ./configure –with-debug



    make



    make install



    mkdir -p /usr/local/var/log/
---//配置信息

Configuration summary for gearmand version 0.33



   * Installation prefix:       /usr/local

   * System type:               pc-linux-gnu

   * Host CPU:                  i686

   * C Compiler:                gcc (GCC) 4.4.6 20120305 (Red Hat 4.4.6-4)

   * Assertions enabled:        yes

   * Debug enabled:             yes

   * Warnings as failure:       no

   * Building with libsqlite3   no

   * Building with libdrizzle   no

   * Building with libmemcached no

   * Building with libpq        no

   * Building with tokyocabinet yes

   * Building with libmysql     yes



---

 


安装遇到的错误:

1.cc1plus: warnings being treated as errors
出现这问题的原因是-Werror这个gcc编译选项。
只要在makefile中找到包含这个-Werror选项的句子,将-Werror删除,或是注释掉就行了~会不会有什么问题还不清楚,至少可以编译通过~~~听说在cygwin环境下编译不会出错的!

2.无效的符号连接

ldconfig查看是哪个连接有问题,我删除了,不在报错了,后来就成功了

3.fatal error: uuid/uuid.h: No such file or directory

这是因为没有uuid库和头文件,需要安装e2fsprogs

 

参考文章:

http://blog.csdn.net/aidenliu/article/details/7406390

http://www.ibm.com/developerworks/cn/opensource/os-php-gearman/

http://www.cnblogs.com/cocowool/archive/2011/08/18/2145144.html

http://www.ywjt.org/index/archives/472.html

 

 安装:

1. 安装依赖库

yum install -y boost boost-devel gcc gcc44 gcc-c++ libevent libevent-devel uuid-c++ uuid-c++-devel uuid-php uuid-dce-devel uuid-dce

2. 安装e2fsprogs

 tar zxvf e2fsprogs-1.41.14.tar.gz

cd e2fsprogs-1.41.14

./configure –enable-elf-shlibs

make

make install

cp -r lib/uuid/ /usr/include/

cp -rf lib/libuuid.so* /usr/lib

3. 安装gearmand

tar zxvf gearmand-0.33.tar.gz

cd gearmand-0.33

./configure –with-debug

make

make install

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

#安装gearman扩展

tar zxvf gearman-0.8.0.tgz

cd gearman-0.8.0

/usr/local/php/bin/phpize

./configure –with-php-config=/usr/local/php/bin/php-config

make

make install

4. 修改php.ini文件,增加 extension = “gearman.so”

sed -i ‘/^extension_dir/a extension = \”gearman.so\”‘ /usr/local/php/etc/php.ini

/usr/local/php/sbin/php-fpm reload

5. 启动Job Server 进程

gearmand -L 192.168.30.180 -p 4730 -u root -d

 

测试代码:

 

<?php



# Client code



echo "Starting\n";



# Create our client object.

$gmclient= new GearmanClient();



# Add default server (localhost).

$gmclient->addServer('127.0.0.1',4730);



echo "Sending job\n";



$result = $gmclient->do("reverse", "Hello!");



echo "Success: $result\n";



?> 

 

<?php



echo "Starting\n";



# Create our worker object.

$gmworker= new GearmanWorker();



# Add default server (localhost).

$gmworker->addServer('127.0.0.1',4730);



# Register function "reverse" with the server. Change the worker function to

# "reverse_fn_fast" for a faster worker with no output.

$gmworker->addFunction("reverse", "reverse_fn");



print "Waiting for job...\n";

while($gmworker->work())

{

  if ($gmworker->returnCode() != GEARMAN_SUCCESS)

  {

    echo "return_code: " . $gmworker->returnCode() . "\n";

    break;

  }

}



function reverse_fn($job)

{

  echo strrev($job->workload());

  return strrev($job->workload());

}



?> 

 

监控工具:

Gearman-Monitor on GitHub

把Net_Gearman-0.2.3.tgz的net目录放到上面的根目录下 即可

 

 

 

 

你可能感兴趣的:(gearman)