<?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