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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wjc19911118/article/details/51802297

安装依赖

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()));
  }

猜你喜欢

转载自blog.csdn.net/wjc19911118/article/details/51802297