zoukankan      html  css  js  c++  java
  • 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
                                                                         
        
    
    
    
    
    
        
        
        
        
        
        
        
  • 相关阅读:
    Git 处理tag和branch的命令
    手把手教您使用第三方登录
    iOS 中隐藏UITableView最后一条分隔线
    Android简易实战教程--第四十四话《ScrollView和HorizontalScrollView简单使用》
    iOS-改变UITextField的Placeholder颜色的三种方式
    react-native 关闭黄屏警告
    reactnative js onclick 模拟单击/双击事件
    reactnative 监听屏幕方向变化
    reactnative0.61.2 使用react-native-webrtc
    use react-navigation@2.18.2
  • 原文地址:https://www.cnblogs.com/sixiong/p/6237733.html
Copyright © 2011-2022 走看看