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
                                                                     
    





    
    
    
    
    
    
    
相關文章
相關標籤/搜索