gearman是一个任务分发系统,将计算比较耗时的任务分发给不同的机器专门进行计算,而任务发起的初始程序不必等待这些任务完成就可以返回而继 续执行。笔者最开始做PHP邮件发送的时候,因为邮件发送耗时比较长,这时PHP脚本就会被阻塞,必须等待邮件发送完毕后,脚本才能运行结束。不但用户体 验不好,也会带来负载的问题,那么可不可以把发送邮件的任务分派给其他机器,程序把任务分派之后就立即返回呢。答案就是:gearman

我们先来编译和安装gearman

gearman官网上的文档很详细:http://gearman.org/getting-started/

其中涉及到各平台的安装方法,包括windows : http://www.phpvs.net/2010/11/30/installing-gearman-and-gearmand-on-windows-with-cygwin/ . 这里采取源代码安装的方式(yum安装有时候让人沮丧,因为repository里可能没有这个软件)

因为gearmen的工作原理,它分为Job Server和 Client & Worker APIs两部分,如下图所示(图片取自gearman官网)

整个程序执行的流程自上而下,上面的和下面的两个蓝色块都是你的程序代码——实现你的业务逻辑,上面的蓝色块是你的任务发起代码,比如你的邮件数据 的准备和发送请求的准备,下面的蓝色块是任务执行的代码,比如邮件发送的执行。三个黄色块的总和就是gearman,上面的黄色块是Client API,提供和各种语言沟通的统一接口,下面的黄色块是Worker API,也是提供统一的接口,只不过一个靠近请求发送,另一个靠近请求处理。两者统称为Client & Worker APIs。中间的黄色块就是gearman的服务部分了,即Gearman Job Server(gearmand)。我们首先安装Gearman Job Server.

Gearman Job Server 有三个实现版本(http://gearman.org/download/): gearmand(c)、java-gearman-service(java) 和 Gearman::Server(perl)。三种语言,三种实现版本,这里选择gearmand(c),你也可以根据你熟悉的语言进行选择。

在https://launchpad.net/gearmand/1.2/1.1.12/+download/gearmand-1.1.12.tar.gz 上将源码下载后

#cd ~/下载

#tar -xvzf gearman-1.1.12.tar.gz

#cd ./gearman-1.1.12

在./configure 之前,请确保你的系统里 gcc 和 g++ 能正常工作,如果没有安装,请yum install。如果yum无法安装g++,可以使用Gnome的系统工具—管理—添加/删除软件功能,添加C++ support for gcc。有一点要注意的是,如果没有g++,那么即使你安装了boost和boost-devel库,也会提示你找不到boost-lib.

然后确认是否安装 gperf、libevent开发包、libuuid开发包和mysql开发包。

如果没有安装,分别进行yum安装

yum install gperf

yum install libevent-devel

yum install libuuid-devel

yum install mysql-devel

然后./configure,成功后make && make install

在编译过程中,笔者还遇到一个问题,就是提示找不到mysql.h头文件,这是缺失mysql开发包导致的,执行whereis mysql 果然没有看到 include路径,解决方法就是 yum install mysql-devel,成功后再次执行whereis mysql 看到了include路径,然后编译gearmand(c)成功,安装成功。

安装成功后,启动gearmand

#gearmand -d

但在笔者的机器上提示了一个错误:

gearmand: Could not open log file “/usr/local/var/log/gearmand.log”, from “/root/下载/geard-1.1.12″, switching to stderr. (No such file or directory) 这是/usr/local文件夹的权限导致的,gearmand(c)服务程序没有写这个文件夹的权限,将/usr/local的权限改为766 或者建立/usr/local/var/log/文件夹即可。

gearman mysql编译_gearman初探(一、编译和安装)相关推荐

  1. gearman mysql持久化_gearman + mysql方式实现持久化操作示例

    本文实例讲述了gearman+mysql方式实现持久化操作.分享给大家供大家参考,具体如下: 1.为什么要持久化? gearman的job server中的工作队列存储在内存中,一旦服务器有未处理的任 ...

  2. gearman mysql 扩展_Gearman分布式任务处理系统(二)扩展应用

    对于绝大多数发展中等的web 2.0网站来说,LAMP结构已经不能满足现在的需要了,新的架构组合是GLAMMP,G=Gearman(分布式远程过程处理),M=Memcached(高性能的分布式的内存对 ...

  3. gearman mysql 扩展_Gearman的安装和使用

    Gearman 是一个分布式任务分发系统,通过程序调用(API,跨语言)分布式地把工作委派给更适合做某项工作的机器,且这些机器可以以并发的.负载均衡的形式来共同完成某项工作.当计算密集型场景时,适合在 ...

  4. mysql 编译_mysql 5.7 编译——VS2017

    主要步骤: vs 2017 下载就不写了,需要安装win 8.1 sdk,没有的需要打开setup安装即可. (1)从 mysql 的官网下载 mysql src 5.7.20 (2)下载后解压到某个 ...

  5. MySQL 5.5单实例 编译安装

    1.建立MySQL账号 首先以root登录到Linux,然后执行如下命令创建MySQL组及用户 [root@loveyu home]# groupadd mysql[root@loveyu home] ...

  6. mysql基础(一) 编译安装mysql5.5

    一:编译mysql useradd -M -s /sbin/nologin mysql                #创建mysql用户 yum -y install cmake           ...

  7. mysql 5.6.23 源码包安装报错_Ubuntu 14.10下编译安装MySQL 5.6.23

    1. 安装环境: Ubuntu Server 14.10 MySQL-5.6.23.tar.gz 2. 安装必备的工具 sudo apt-get install make bison g++ buil ...

  8. mysql 5.7 源码编译安装_mysql-5.7.*源码编译安装

    mysql-5.7.*源码编译安装 系统安装条件 官方文档说明:http://dev.mysql.com/doc/refman/5.7/en/source-installation.html 1> ...

  9. 【全教程】qt连接mysql——从qt编译mysql驱动到qt连接mysql数据库(二、编译连接)

    本篇教程分为三个部分: [全教程]qt连接mysql--从qt编译mysql驱动到qt连接mysql数据库(一.编译连接前准备) [全教程]qt连接mysql--从qt编译mysql驱动到qt连接my ...

最新文章

  1. 优秀产品必经的14个拷问
  2. C语言-实现矩阵的转置-随机函数产生随机数并赋予数组中-190222
  3. 助记词创建以太坊钱包源码_墨客科普 | MOAC区块链钱包账号管理
  4. 微信公众号服务器推送307,关于公众号模板消息推送结果
  5. 从LFS官方文档构建完整Linux系统
  6. 经理必看的8个管理网站
  7. 那些还在传程序猿35岁职业危机
  8. SanDisk U盘加密软件 在其他u盘使用
  9. bootdo框架中使用shiro控制的权限(bootstrap)
  10. 2022-2027年(新版)中国工程造价咨询行业现状动态与未来前景预测报告
  11. Pyserial库使用心得
  12. oracle中算百分比,Oracle百分比分析函数RATIO_TO_REPORT() OVER()实例详解
  13. 计算机图形学立方体旋转代码,Flash AS教程:旋转立方体
  14. excel双击打不开,但是点击文件里的打开就行
  15. 小米手机5s简单刷成开发版获得ROOT权限的方法
  16. 设定软件使用期限,根据网络时间保护试用软件产品的方法
  17. 谁与争锋,JDK动态代理大战CGLib动态代理
  18. JS逆向——破解百度翻译参数(sign)爬虫 超级详细
  19. Vim 8文本处理实战 第二章 高级编辑和文本浏览 阅读笔记2
  20. Sphinx (Sphinx(斯芬克司))

热门文章

  1. Dapr Meetup 3.22【周六】
  2. 如何在 .NET 中使用 Redis缓存
  3. C#实现乞丐版IOC容器
  4. .NET Core开源任务调度平台ScheduleMaster上新了
  5. 修复被破坏的 vs 工程设置
  6. 揭秘 .NET 5 和Java 互操作
  7. 中国速度之二神山建设(4):全能运维,召之即来,来之即战 | IDCF DevOps案例研究...
  8. .NET ORM FreeSql 第一个正式版本发布 v1.0.0
  9. EF Core For MySql查询中使用DateTime.Now作为查询条件的一个小问题
  10. 【.NET Core 跨平台 GUI 开发】第一篇:编写你的第一个 Gtk# 应用