gearman-与php结合(1)

项目需要一个调度模块,对定时任务、条件触发任务(例如按照流量)进行调度。我的设计是:一个扫描器定期扫描数据库里的未开始任务,将任务逐一发给gearman,gearman分发给workers,worker分布式地判断任务触发条件,如果满足触发条件,封装任务发送给gearman,gearman分发给workers,workers对任务进行执行。

gearman的运行架构:

gearman的client&worker api支持很多语言,我需要php的。php分两种,一种是Gearman Extension,是php扩展,是一个封装了libgearman c库的扩展,以.so扩展模块的方式来让php加载,大概步骤是:需要安装libgearman(这个之前要安装libevent等等),再使用pecl安装php的gearman扩展;另一种是Net_Gearman,这是个纯php的库,可以使用pear之间搞下来,使用的话需要require进来的。

这里我还搞清楚了pecl和pear的区别:

Pear:是PHP的扩展代码包,所有的扩展均以PHP代码的形式出现,功能强大,安装简单,甚至可以改改就用。使用的时候,要在代码中进行Include才能够使用。

Pecl:是PHP的标准扩展,可以补充实际开发中所需的功能,所有的扩展都需要安装,并且在php.ini中配置,重启php。

我在安装Gearman Extension的时候,遇到了n个问题,搞不定,放弃了,改用Net_Gearman。

安装:

pear install Net_Gearman

一般会被解压在这里:

php/lib/php/Net/Gearman

api文档

我找到一个老外写的Net_Gearman教程,感觉还不错,里面还有一些例子。我跑通了一个例子,之后会对每个例子进行学习和测试。

时间: 2024-10-27 06:27:53

gearman-与php结合(1)的相关文章

gearman mysql持久化

gearman 创建Mysql持久化队列的方式如下: 1. 登入mysql命令行,运行: create database gearman; 2. 启动gearman,命令如下: /usr/local/gearman/sbin/gearmand -p 4730 -L 0.0.0.0 --log-file=/tmp/gearmand-4730.log --pid-file=/tmp/gearmand-4730.pid -q MySQL --mysql-host=localhost --mysql-u

centos6.6中service启动gearman服务

#!/bin/bash # chkconfig: - 85 15 #descrīption: service(/usr/local/gearmand-1.1.12/sbin/gearmand) . /etc/rc.d/init.d/functions start() { echo -n $"Starting $prog" echo -e " gearman : [确定]" /usr/local/gearmand-1.1.12/sbin/gearmand &

centos安装gearman

centos安装gearman post by rocdk890 / 2012-8-4 1:11 Saturday linux技术 发表评论 今天公司让我在服务器上安装gearman,服务器环境是lamp,那gearman是什么?其实这个gearman是一个处理分布式过程通信的健壮系统.它提供了一个通用的应用程序框架,主要用来把任务转发给到其他机器或进程.使用Gearman 能让程序实现并行工作.负载均衡和跨语言调用.它能够用于不同类型的应用程序,从高可用的web站点到数据库复制传输. 系统:c

Gearman简介

gearman,从名字上看叫做"齿轮工",就是通过齿轮把不同的组件组合在一起.通常,多语言多系统之间的集成是项目开发中一个比较头疼的问题.一般会采用RPC风格或者是REST风格的WebService.但是总感觉比较麻烦.gearman就应运而生了,作为一个任务分发架构,它能够轻松的将前端的任务通过Job Server分发给后端的Worker处理.Gearman请求的处理过程涉及三个角色:Client -> Job Server -> Worker. Client:请求的发起

Gearman 安装使用教程

#安装运行依赖 yum install -y boost boost-devel libevent gperf libuuid libuuid-devel #下载最新版 Gearman wget --no-check-certificate https://launchpad.net/gearmand/1.2/1.1.12/+download/gearmand-1.1.12.tar.gz ./configure make && make install mkdir -p /usr/loca

gearman在虚拟机上运行没有自动开启的处理

几天来被gearman无响应的问题困扰,后来请教了大神解决.原因是gearman在虚拟机上运行不稳定,无法自动开启,需手动开始,输入图片的两行命令即开始.

Gearman任务分布系统部署windows平台_使用Cygwin

1.下载Cygwin http://www.cygwin.com/ 然后选择 Install from Internet  -> Direct Connection -> 选择第一个网址就行 下面是选择库安装的截图,注意输入你需要的库,然后点击那个skip,看到出现版本号就行 2.安装时候选择库 下面是个人在配置的时候发现需要,当然你也可以编译gearman的时候去发现少那些库,在重新安装cygwin,然后搜索到这些库然后安装就可以了 gcc make libiconv boost libev

gearman安装

官网:  http://gearman.org/ 一篇文章: 利用Gearman实现异步任务处理 一.问题分析 问题:在性能测试过程中,发现用户管理平台在进行图片上传时,性能不佳. 分析:经过代码分析得知,主要的瓶颈是图片上传后,还需要根据图片组件所在页面模块容器进行一系列处理:图片生成缩略图,裁剪图片,加水印等,这些处理在高并发的情况下,会消耗大量cpu资源,导致系统响应速度非常慢. 旧的处理方式: 次控端调用前台接口进行上传图片后,前台程序先上传图片,接着,进行图片压缩等处理,然后再返回结果

gearman with postgresql as persistent Queuing

gearman is a good thing gearman client --------------> gearman server <------------------------gearman worker clients are requesting to handler something, gearman server is delivering jobs gearman workers get some jobs and finish. So different progr

用Gearman分发PHP应用程序的工作负载

文章来源:PHP开发学习门户 地址:http://www.phpthinking.com/archives/518 尽管一个 Web 应用程序的大部分内容都与表示有关,但它的价值与竞争优势却可能体现在若干专有服务或算法方面.如果这类处理过于复杂或拖沓,最好是进行异步执行,以免 Web 服务器对传入的请求没有响应.实际上,将一个计算密集型的或专门化的功能放在一个或多个独立的专用服务器上运行,效果会更好. 常用的缩略词 API:应用程序编程接口 HTTP:超文本传输协议 LAMP:Linux.Apa