gearman学习笔记

<?php 
  搭建描述:
  1. 在实际使用时应该是运行gearmand -d 的 server 一台. [要装gearmand,运行gearmand]
  
  2. 处理worker的机器若干[要装gearmand 及php.so但gearmand不需要运行].
 
  3. 下达任务client若干[要装gearmand 及php.so但gearmand不需要运行].
 
  4. worker 与 client 不会直接通信,都是通过gearmand分发处理的.
 
 上面是一个同步请求的例子,其实gearman可以异步处理,把client端里的代码 do函数 换成 doBackground函数就可以了.


 
第一步:安装
wget https://launchpad.net/gearmand/1.2/1.1.12/+download/gearmand-1.1.12.tar.gz 
 
  遇到错误 : gearman configure: error: could not find boost
  yum install -y boost boost-devel  
  yum install -y gperf rperf-devel 
  yum install -y libuuid libuuid-devel
   
 tar -zxvf gearmand-1.1.12.tar.gz  
  ./configure --
  
  `configure' configures gearmand 1.1.12 to adapt to many kinds of systems.

        Usage: ./configure [OPTION]... [VAR=VALUE]...

        To assign environment variables (e.g., CC, CFLAGS...), specify them as
        VAR=VALUE.  见下文描述的一些有用的变量

        在括号中指定选项的默认值。

        Configuration:
          -h, --help              显示这个帮助并退出
              --help=short        特定于这个包显示选项
              --help=recursive    显示所有包含包的短期帮助
          -V, --version           显示版本信息并退出
          -q, --quiet, --silent   不打印“检查…的消息
              --cache-file=FILE   缓存中测试结果文件(禁用)
          -C, --config-cache      alias for `--cache-file=config.cache'
          -n, --no-create         不创建输出文件
              --srcdir=DIR        find the sources in DIR [configure dir or `..']

        Installation directories:
          --prefix=PREFIX         install architecture-independent files in PREFIX
                                  [/usr/local]
          --exec-prefix=EPREFIX   install architecture-dependent files in EPREFIX
                                  [PREFIX]

        By default, `make install' will install all the files in
        `/usr/local/bin', `/usr/local/lib' etc.  You can specify
        an installation prefix other than `/usr/local' using `--prefix',
        for instance `--prefix=$HOME'.

        For better control, use the options below.

        Fine tuning of the installation directories:
          --bindir=DIR            user executables [EPREFIX/bin]
          --sbindir=DIR           system admin executables [EPREFIX/sbin]
          --libexecdir=DIR        program executables [EPREFIX/libexec]
          --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
          --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
          --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
          --libdir=DIR            object code libraries [EPREFIX/lib]
          --includedir=DIR        C header files [PREFIX/include]
          --oldincludedir=DIR     C header files for non-gcc [/usr/include]
          --datarootdir=DIR       read-only arch.-independent data root [PREFIX/share]
          --datadir=DIR           read-only architecture-independent data [DATAROOTDIR]
          --infodir=DIR           info documentation [DATAROOTDIR/info]
          --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]
          --mandir=DIR            man documentation [DATAROOTDIR/man]
          --docdir=DIR            documentation root [DATAROOTDIR/doc/gearmand]
          --htmldir=DIR           html documentation [DOCDIR]
          --dvidir=DIR            dvi documentation [DOCDIR]
          --pdfdir=DIR            pdf documentation [DOCDIR]
          --psdir=DIR             ps documentation [DOCDIR]

        Program names:
          --program-prefix=PREFIX            prepend PREFIX to installed program names
          --program-suffix=SUFFIX            append SUFFIX to installed program names
          --program-transform-name=PROGRAM   run sed PROGRAM on installed program names

        System types:
          --build=BUILD     configure for building on BUILD [guessed]
          --host=HOST       cross-compile to build programs to run on HOST [BUILD]

        Optional Features:
          --disable-option-checking  ignore unrecognized --enable/--with options
          --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
          --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
          --enable-dependency-tracking
                                  do not reject slow dependency extractors
          --disable-dependency-tracking
                                  speeds up one-time build
          --enable-silent-rules   less verbose build output (undo: "make V=1")
          --disable-silent-rules  verbose build output (undo: "make V=0")
          --enable-shared[=PKGS]  build shared libraries [default=yes]
          --enable-static[=PKGS]  build static libraries [default=yes]
          --enable-fast-install[=PKGS]
                                  optimize for fast installation [default=yes]
          --disable-libtool-lock  avoid locking (might break parallel builds)
          --disable-libdrizzle    Build with libdrizzle support [default=on]
          --enable-dtrace         Build with support for the DTRACE. [default=no]
          --disable-libpq         Build with libpq, ie Postgres, support [default=on]
          --disable-libtokyocabinet
                                  Build with libtokyocabinet support [default=on]
          --disable-hiredis       Build with hiredis support [default=on]
          --enable-cyassl         Enable ssl support for Gearman [default=yes]
          --enable-ssl            Enable ssl support for Gearman [default=no]
          --disable-libmemcached  Build with libmemcached support [default=on]
          --enable-jobserver[=no/yes/#] default=yes
                                Enable up to # make jobs
                                yes: enable one more than CPU count

          --enable-debug          Add debug code/turns off optimizations (yes|no)
                                  [default=no]
          --enable-assert         Enable assert, this will be overridden by
                                  --enable-debug (yes|no) [default=no]

        Optional Packages:
          --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
          --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
          --with-pic[=PKGS]       try to use only PIC/non-PIC objects [default=use
                                  both]
          --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
          --with-sysroot=DIR Search for dependent libraries within DIR
                                (or the compiler's sysroot if not specified).
          --with-boost[=ARG]      use Boost library from a standard location
                                  (ARG=yes), from the specified location (ARG=<path>),
                                  or disable it (ARG=no) [ARG=yes]
          --with-boost-libdir=LIB_DIR
                                  Force given directory for boost libraries. Note that
                                  this will override library path detection, so use
                                  this parameter only if default library detection
                                  fails and you know exactly where your boost
                                  libraries are located.
          --with-boost-program-options[=special-lib]
                                  use the program options library from boost - it is
                                  possible to specify a certain library for the linker
                                  e.g.
                                  --with-boost-program-options=boost_program_options-gcc-mt-1_33_1
          --with-mysql=[ARG]      use MySQL client library [default=yes], optionally
                                  specify path to mysql_config
          --with-curl-prefix=PREFIX
                                  Prefix where curl is installed (optional)
          --with-curl-exec-prefix=EPREFIX
                                  Exec prefix where curl is installed (optional)
          --with-drizzled=[PATH]
                                  absolute path to drizzled executable
          --with-sqlite3=[ARG]    use SQLite 3 library [default=yes], optionally
                                  specify the prefix for sqlite3 library
          --with-postgresql=[ARG] use PostgreSQL library [default=yes], optionally
                                  specify path to pg_config
          --with-memcached=[PATH]
                                  absolute path to memcached executable
          --with-sphinx-build=[PATH]
                                  absolute path to sphinx-build executable
          --with-lcov=[PATH]    absolute path to lcov executable
          --with-genhtml=[PATH] absolute path to genhtml executable
          --with-openssl=DIR      root of the OpenSSL directory
          --with-sanitize         Enable sanitize flag for compiler if it supports
                                  them [default=no]

        影响安装的环境变量区 :
          CC          C编译器的命令
          CFLAGS      C编译器标志
          LDFLAGS     linker flags, e.g. -L<lib dir> if you have libraries in a
                      nonstandard directory <lib dir>
          LIBS        libraries to pass to the linker, e.g. -l<library>
          CPPFLAGS    (Objective) C/C++ preprocessor flags, e.g. -I<include dir> if
                      you have headers in a nonstandard directory <include dir>
          CXX         C++ compiler command
          CXXFLAGS    C++ compiler flags
          CPP         C preprocessor
          CXXCPP      C++ preprocessor
          MYSQL_CONFIG
                      Full path to mysql_config program
          CURL_CONFIG config script used for curl
          CURL_CFLAGS CFLAGS used for curl
          CURL_LIBS   LIBS used for curl
          LIBCURL_CPPFLAGS
                      C preprocessor flags for LIBCURL headers
          LIBCURL_LDFLAGS
                      linker flags for LIBCURL libraries
          DRIZZLED_BINARY
                      Absolute path to drizzled executable
          LIBDRIZZLE_CPPFLAGS
                      C preprocessor flags for LIBDRIZZLE headers
          LIBDRIZZLE_LDFLAGS
                      linker flags for LIBDRIZZLE libraries
          TOKYOCABINET_CPPFLAGS
                      C preprocessor flags for TOKYOCABINET headers
          TOKYOCABINET_LDFLAGS
                      linker flags for TOKYOCABINET libraries
          HIREDIS_CPPFLAGS
                      C preprocessor flags for HIREDIS headers
          HIREDIS_LDFLAGS
                      linker flags for HIREDIS libraries
          MEMCACHED_BINARY
                      Absolute path to memcached executable
          SPHINXBUILD Absolute path to sphinx-build executable
          LCOV        Absolute path to lcov executable
          LCOV_GENHTML
                      Absolute path to genhtml executable
          CYASSL_CPPFLAGS
                      C preprocessor flags for CYASSL headers
          CYASSL_LDFLAGS
                      linker flags for CYASSL libraries
          MCHECK_CPPFLAGS
                      C preprocessor flags for MCHECK headers
          MCHECK_LDFLAGS
                      linker flags for MCHECK libraries

                      
                      
                      
                      
                      
                      
                      
192.168.137.111   job 服务启动
/usr/sbin/gearmand -d --pid-file=/var/run/gearman/gearmand.pid --user=gearman --daemon --log-file=/var/log/gearman-job-server/gearman.log --listen=127.0.0.1                                         

[root@www gearmand]# /usr/local/gearmand/sbin/gearmand -h

Allowed options:

Allowed options:

General options:
  -b [ --backlog ] arg (=32)                                        Number of backlog  connections for listen. 
  -d [ --daemon ]                                                   Daemon,detach and  run in the background.
                                                                     
  --exceptions                                                      Enable  protocol exceptions by default.
  -f [ --file-descriptors ] arg                                     Number of file  descriptors to allow  for the  process (total connections will be slightly less). 
                                                                    Default is  max allowed for user.
                                                                    
  -h [ --help ]                                                     Print this  help menu.
  -j [ --job-retries ] arg (=0)                                     Number of  attempts to run the job  before the job server  removes it.
                                                                    This is  helpful to  ensure a bad job does not crash all available workers.  Default is no limit.
                                                  

192.168.137.222
[root@www php]# cat worderOne.php 
    <?php
    $worker=new GearmanWorker();
    $worker->addServer("192.168.137.111",4730);  //连接到Job server 上
    $worker->addFunction("reverse","my_reverse_function"); 
    while ($worker->work());
         
    function my_reverse_function($job)
    {
        return strrev($job->workload())." worker---1--";
    }

192.168.137.222
[root@www php]# cat worderTwo.php 
    <?php
    $worker=new GearmanWorker();
    $worker->addServer("192.168.137.111",4730);  //连接到Job server 上
    $worker->addFunction("reverse","my_reverse_function");
    while ($worker->work());

    function my_reverse_function($job)
    {
        return strrev($job->workload())." worker---2--Two";
    }



192.168.137.111 
[root@www php]# cat client.php    
<?php
 $client=new GearmanClient();
 $client->addServer("192.168.137.111",4730); //连接到Job server上

 echo $client->doNormal("reverse","Hello World!");

 
 
 



openresty   版本
https://github.com/zhhchen/lua-resty-gearman
                                                                     
    





    
    
    
    
    
    
    

 

posted @ 2016-12-30 17:24  诗兄  阅读(1080)  评论(0编辑  收藏  举报