• gearman的安装使用


    yum 安装(推荐)

    1.安装gearmand

    [root@iZbp12y6fwj9mup08bgko6Z ~]# mkdir /usr/local/gearmand
    [root@iZbp12y6fwj9mup08bgko6Z ~]# cd /usr/local/gearmand/
    [root@iZbp12y6fwj9mup08bgko6Z gearmand]# sudo yum install gearmand

    2.安装php扩展

    [root@iZbp12y6fwj9mup08bgko6Z gearmand]# sudo yum install php-pecl-gearman

    3.查看扩展是否安装成功

    [root@iZbp12y6fwj9mup08bgko6Z gearmand]# php -m | grep gearman
    gearman

    源码安装(配置php没有成功)

    1.安装gearmand

    [root@iZbp12y6fwj9mup08bgko6Z ~]# mdkir /usr/local/gearmand
    [root@iZbp12y6fwj9mup08bgko6Z gearmand]# wget https://launchpad.net/gearmand/1.2/1.1.12/+download/gearmand-1.1.12.tar.gz
    [root@iZbp12y6fwj9mup08bgko6Z gearmand]# tar xvzf gearmand-1.1.12.tar.gz
    [root@iZbp12y6fwj9mup08bgko6Z gearmand]# cd gearmand-1.1.12
    [root@iZbp12y6fwj9mup08bgko6Z gearmand-1.1.12]# ./configure (此步可能会报错,参考下面解决方法)
    [root@iZbp12y6fwj9mup08bgko6Z gearmand-1.1.12]# make
    [root@iZbp12y6fwj9mup08bgko6Z gearmand-1.1.12]# make install

    执行./configure可能会有报错could not find boost,别慌,按下面方法安装相关依赖后重新执行./configure编译

    checking for boostlib >= 1.39... configure: We could not detect the boost libraries (version 1.39 or higher). If you have a staged boost library (still not installed) please specify $BOOST_ROOT in your environment and do not give a PATH to --with-boost option.  If you are sure you have boost installed, then check your version number looking in <boost/version.hpp>. See http://randspringer.de/boost for more documentation.
    configure: error: could not find boost
    
    解决方法
    yum install -y boost boost-devel
    yum install gcc-c++.x86_64 gperf
    yum -y install libevent libevent-devel

    2.安装扩展

    [root@iZbp12y6fwj9mup08bgko6Z gearmand]# wget http://pecl.php.net/get/gearman-1.1.2.tgz
    [root@iZbp12y6fwj9mup08bgko6Z gearmand]# tar xvzf gearman-1.1.2.tgz
    [root@iZbp12y6fwj9mup08bgko6Z gearmand]# cd gearman-1.1.2
    [root@iZbp12y6fwj9mup08bgko6Z gearman-1.1.2]# whereis phpize
    phpize: /usr/local/php/bin/phpize
    [root@iZbp12y6fwj9mup08bgko6Z gearman-1.1.2]# /usr/local/php/bin/phpize (此步可能会报错,参考下面解决方法,解决后重新执行phpize)
    [root@iZbp12y6fwj9mup08bgko6Z gearman-1.1.2]# ./configure
    [root@iZbp12y6fwj9mup08bgko6Z gearman-1.1.2]# make (此步可能会报错,参考下面解决方法,解决后重新make)
    [root@iZbp12y6fwj9mup08bgko6Z gearman-1.1.2]# make install
    Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/
    [root@iZbp12y6fwj9mup08bgko6Z gearman-1.1.2]#

    执行 phpize 报错

    [root@iZbp12y6fwj9mup08bgko6Z gearman-1.1.2]# /usr/local/php/bin/phpize
    Cannot find autoconf. Please check your autoconf installation and the
    $PHP_AUTOCONF environment variable. Then, rerun this script.
    
    解决方法,安装 autoconf 依赖,然后重新执行phpize
    [root@iZbp12y6fwj9mup08bgko6Z gearman-1.1.2]# yum install autoconf

    执行make报错

    [root@iZbp12y6fwj9mup08bgko6Z gearman-1.1.2]# make
    
    ......
    make: *** [php_gearman.lo] Error 1
    
    解决方法
    将"php_gearman.loT" 拷贝一份命名为 "php_gearman.lo",然后再make
    [root@iZbp12y6fwj9mup08bgko6Z ~]# find / -name php_gearman.loT
    /usr/local/gearmand/gearman-1.1.2/php_gearman.loT
    [root@iZbp12y6fwj9mup08bgko6Z ~]# cp /usr/local/gearmand/gearman-1.1.2/php_gearman.loT /usr/local/gearmand/gearman-1.1.2/php_gearman.lo
    [root@iZbp12y6fwj9mup08bgko6Z ~]# find / -name php_gearman.lo
    /usr/local/gearmand/gearman-1.1.2/php_gearman.lo

    3.手动添加配置(修改php.ini 添加extension = gearman.so)

    [root@iZbp12y6fwj9mup08bgko6Z gearman-1.1.2]# find / -name php.ini
    /usr/local/php/etc/php.ini
    [root@iZbp12y6fwj9mup08bgko6Z gearman-1.1.2]# vim /usr/local/php/etc/php.ini
    
    ...
    extension = gearman.so

    或者

    [root@iZbp12y6fwj9mup08bgko6Z gearman-1.1.2]# sudo echo "extension=gearman.so" >> /usr/local/php/etc/php.ini

    或者

    修改php.ini,以下加入语句加入:
    extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20170718/gearman.so

    4.重启php

    [root@iZbp12y6fwj9mup08bgko6Z gearman-1.1.2]# service php-fpm stop
    [root@iZbp12y6fwj9mup08bgko6Z gearman-1.1.2]# service php-fpm start

    使用
    相关代码:
    worker.php

    <?php
        $worker= new GearmanWorker();
        $worker->addServer("127.0.0.1", 4730);  
        $worker->addFunction("title", "title_function");
        while ($worker->work());
    
        function title_function($job){
            return "你请求的数据:" . $job->workload() . " 请求时间:" . date('Y-m-d H:i:s');
            //return ucwords(strtolower($job->workload()));
        }
    ?>

    client.php

    <?php
        $client= new GearmanClient();
        $client->addServer("127.0.0.1", 4730);
        print $client->do("title", json_encode(
            [
                'username'=>'jack',
                'email'=>'jack@foxmail.com',
            ]
        ));
        print "
    ";
    ?>

    测试:
    1.启动服务

    sudo gearmand -d

    源码安装启动服务可能会报缺失日志文件

    [root@iZbp12y6fwj9mup08bgko6Z gearman-1.1.2]# gearmand -d (报错)
    gearmand: Could not open log file "/usr/local/var/log/gearmand.log", from "/usr/local/gearmand/gearman-1.1.2", switching to stderr. (No such file or directory)

    在提示的目录下创建好/log/gearmand.log文件,再次执行上述命令,就正常启动了job server。

    2.启动worker

    php worker.php

    3.启动client

    [root@iZbp12y6fwj9mup08bgko6Z gearmand]# php client.php 
    你请求的数据:{"username":"jack","email":"jack@foxmail.com"} 请求时间:2020-07-15 13:55:43

    参考:https://www.jianshu.com/p/c7a55dee5796

    报错参考解决:https://blog.csdn.net/huangjinvv/article/details/8018664

  • 相关阅读:
    Python中matplotlib模块的简单使用
    Python中numpy模块的简单使用
    TensorFlow入门(矩阵基础)
    TensorFlow入门(常量变量及其基本运算)
    计算机视觉入门
    菜得一P!
    Hdu2097 Sky数
    Hdu2099 整除的尾数
    Hdu2098 分拆素数和
    Linux下用Bash语言实现简单排序的功能
  • 原文地址:https://www.cnblogs.com/clubs/p/13308411.html
Copyright © 2020-2023  润新知