Gearman 异步任务软件安装与实例

1 篇文章 0 订阅
1 篇文章 0 订阅

安装依赖

Install Gearman (ubuntu)

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

Install Gearman (centos)

sudo yum install gperf       // Hash 函数库
sudo yum install boost-devel
sudo yum install libevent libevent-devel
sudo yum install libuuid-devel

手动编译安装 boost (如果rpm包安装成功就不用这个了)

1.安装boost
如果不安装boost的话,是安装不上gearmand和gearman的.
wget -c http://download.slogra.com/gearman/boost_1_50_0.tar.gz
tar zxf boost_1_50_0.tar.gz && cd boost_1_50_0
sudo /bin/bash ./bootstrap.sh --prefix=/usr/local/boost
./b2 install

如没有问题,在/etc/profile里的最下方加入:
export CPPFLAGS=-I/usr/local/boost/include
export LDFLAGS=-L/usr/local/boost/lib
保存退出后运行
source /etc/profile
好了,boost就安装成功了.

编译GearmanD

wget https://launchpad.net/gearmand/1.2/1.1.12/+download/gearmand-1.1.12.tar.gz
tar zxvf gearmand…
cd gearmand …
//如果手动安装的boost那么就执行这句,否则执行下一句
sudo ./configure --prefix=/usr/local/gearmand --with-boost=/usr/local/boost
sudo ./configure --prefix=/usr/local/gearmand
sudo make && make install

Install php gearman ext

编译安装

wget http://pecl.php.net/get/gearman-1.1.2.tgz
tar zxvf gearman-1.
cd gearman-1 …
phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install

error1: configure: error: Please install libgearman

我们在安装gearman的时候,已经有libgearman了,但是在编译扩展的时候,却用额外安装的lib,在运行的时候,难免出现性能方面的问题

./configure --prefix=/opt --with-php-config=/usr/local/php/bin/php-config --with-gearman=/usr/local/gearmand

启动 Gearman Job Server

/usr/local/gearman/sbin/gearmand -d
nohup php myworker.php >/dev/null 2>&1 &

可能会出现如下错误:


Could not open log file "/usr/local/var/log/gearmand.log", from "/usr/sbin",
switching to stderr. (No such file or directory)

解决:

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

例子

client

<?php
  // producer
  $client= new GearmanClient();
  //$client->addServers('192.168.1.131:4730,192.168.2.249:4730,192.168.2.250:4730');
  $client->addServer('192.168.1.131',4730);
  print $client->do("title", "AlL THE World's a sTagE");
  print "\n";

server

<?php
  $worker= new GearmanWorker();
  $worker->addServers('192.168.1.131:4730,192.168.2.249:4730,192.168.2.250:4730');
  $worker->addServer('192.168.1.131',4730);
  $worker->addFunction("title", "title_function");
  while ($worker->work());

   //consumer
  function title_function($job)
  {
    return ucwords(strtolower($job->workload()));
  }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值