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