• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    gearman管理工具GearmanManager的安装与php使用方法示例

    本文实例讲述了gearman管理工具GearmanManager的安装与php使用方法。分享给大家供大家参考,具体如下:

    一、gearman自带了一个gearadmin工具

    查看帮助信息

    > gearadmin --help

    查看状态

    > gearadmin --status

    查看worker信息

    > gearadmin --workers
    

    二、为什么要用GearmanManager

    为什么要用GearmanManager来管理我们的worker,因为我们用php编写的worker是要常驻后台运行的。
    而且一旦worker过多时,代码更新,难道要一个一个手动重启,显然这是很麻烦的。如果中途出现意外中断或内存泄漏也不好管理。

    网上的解决方案一般有如下二种:
    1、通过定时任务crontab来定时的重启worker
    2、通过php的pcntl扩展,创建多进程来运行worker,主进程监控子进程,如果子进程退出,则重新启动一个子进程来运行worker。

    三、使用GearmanManager

    GearmanManager下载地址:

    https://github.com/brianlmoon/GearmanManager/releases

    如:GearmanManager-2.1.0.tar.gz

    1、我们创建一个目录用来存放worker的代码

    > mkdir -p /data/workers
    

    2、然后我们创建一个sum.php的worker文件,用来处理计算两个数之和。

    sum.php代码如下:

    ?php
    //注意函数名与文件名相同
    function sum($job) {
     //workload()获取客户端发送来的序列化数据
     $data = json_decode($job->workload(), true);
     //计算并返回结果
     return $data[0] + $data[1];
    }

    当然还有面向对象式的代码如下:

    ?php
    //注意类名与文件名相同
    class sum {
     public function run($job) {
      //workload()获取客户端发送来的序列化数据
      $data = json_decode($job->workload(), true);
      //计算并返回结果
      return $data[0] + $data[1];
     }
    }

    3、解压下载的GearmanManager压缩包

    > tar xf GearmanManager-2.1.0.tar.gz
    > mv GearmanManager-2.1.0 /data/GearmanManager
    > cd /data/GearmanManager

    我们只需要关心bin和etc这两个目录,etc目录下提供了三个配置文件

    config-advanced.ini 高级配置
    config.ini 简单配置
    config.php php方式的配置

    配置文件说明:

    ;全局配置
    [GearmanManager]
    ;指定服务器,可添加多个,用逗号分割
    host=192.168.1.111:4730,192.168.1.222:4730
    ;worker文件存放目录,可添加多个,用逗号分割
    worker_dir=/data/workers
    ;要加载的worker,默认所有
    include=*
    ;运行所有worker进程数
    count=10
    ;worker专用进程数,比如总数是10个,有10个worker,每个worker一个进程
    dedicated_count=1
    ;worker最大有效期,单位秒
    max_worker_lifetime=3600
    ;监控worker目录的代码更新,发现代码更新,则杀掉进程,重新加载代码。
    auto_update=1
    ;超时时间
    timeout = 300
    ;当然我们也可以对指定的某个worker进行配置
    [sum]
    ;指定5个进程
    dedicated_count=5
    ;5个进程都只做sum工作
    dedicated_only=1

    4、我们复制配置文件,并修改成如上所示,并保存

    > mv etc/config-advanced.ini etc/GearmanManager.ini

    5、运行GearmanManager

    > cd /data/GearmanManager
    > ./bin/pecl_manager.php -c /data/GearmanManager/etc/GearmanManager.ini -vvv

    参数说明如下:

    -P 管理进程pid文件所在目录,配置文件中通过pid_file来指定
    -d 以守护进程形式运行
    -u 指定守护进程的用户
    -w 指定worker目录,当然配置文件里有配置,这里可以不用
    -c 指定配置文件
    -l 指定日志存放目录,如果没指定,则输出到标准输出stdout
    -h 指定服务器,例如: 192.168.1.111:4730,192.168.1.222:4730
    -v 只记录启动与关闭信息
    -vv 进程的创建与退出信息
    -vvv 关于worker信息和所做工作
    -vvvv 调试信息
    -vvvvv 所有信息

    如果出现/usr/bin/env: php: 没有那个文件或目录,请把php可执行文件加入环境变量

    > echo 'export PATH=/data/php56/bin:/data/php56/sbin:$PATH' >> /etc/profile
    > source /etc/profile
    

    更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP进程与线程操作技巧总结》、《PHP网络编程技巧总结》、《PHP基本语法入门教程》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

    希望本文所述对大家PHP程序设计有所帮助。

    您可能感兴趣的文章:
    • php使用gearman进行任务分发操作实例详解
    • python基于json文件实现的gearman任务自动重启代码实例
    • gearman中worker常驻后台,导致MySQL server has gone away的解决方法
    • PHP使用gearman进行异步的邮件或短信发送操作详解
    • gearman + mysql方式实现持久化操作示例
    • PHP并发多进程处理利器Gearman使用介绍
    • Gearman::XS在Centos下的编译安装方法
    • gearman队列持久化引发的问题及解决方法
    • gearman的安装启动及python API使用实例
    • rhel5.7下安装gearmand及启动的方法
    • gearman中任务的优先级和返回状态实例分析
    上一篇:php使用gearman进行任务分发操作实例详解
    下一篇:PHP使用gearman进行异步的邮件或短信发送操作详解
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    gearman管理工具GearmanManager的安装与php使用方法示例 gearman,管理工具,GearmanManager,