http://www.ibm.com/developerworks/cn/opensource/os-php-gearman/
从 PHP 使用 Gearman
从 PHP 使用 Gearman 类似于之前的示例,惟一的区别在于这里是在 PHP 内创建 producer 和 consumer。每个 consumer 的工作均封装在一个或多个 PHP 函数内。
清单 1 给出了用 PHP 编写的一个 Gearman worker。将这些代码保存在一个名为 worker.php 的文件中。
清单 1. Worker.php
<?php
$worker= new GearmanWorker();
$worker->addServer();
$worker->addFunction("title", "title_function");
while ($worker->work());
function title_function($job)
{
return ucwords(strtolower($job->workload()));
}
?>
清单 2 给出了用 PHP 编写的一个 producer,或 client。将此代码保存在一个名为 client.php 的文件内。
清单 2. Client.php
<?php
$client= new GearmanClient();
$client->addServer();
print $client->do("title", "AlL THE World's a sTagE");
print "\n";
?>
现在,可以用如下的命令行连接客户机与 worker 了:
$ php worker.php &
$ php client.php
All The World's A Stage
$ jobs
[3]+ Running php worker.php &
这个 worker 应用程序继续运行,准备好服务另一个客户机。
--------------------------------------------------------------------------------
回页首
Gearman 的高级特性
在一个 Web 应用程序内可能有许多地方都会用到 Gearman。可以导入大量数据、发送许多电子邮件、编码视频文件、挖据数据并构建一个中央日志设施 — 所有这些均不会影响站点的体验和响应性。可以并行地处理数据。而且,由于 Gearman 协议是独立于语言和平台的,所以您可以在解决方案中混合编程语言。比如,可以用 PHP 编写一个 producer,用 C、Ruby 或其他任何支持 Gearman 库的语言编写 worker。
一个连接客户机和 worker 的 Gearman 网络实际上可以使用任何您能想象得到的结构。很多配置能够运行多个代理并将 worker 分配到许多机器上。负载均衡是隐式的:每个可操作的可用 worker(可能是每个 worker 主机具有多个 worker)从队列中拉出作业。一个作业能够同步或异步运行并具有优先级。
Gearman 的最新版本已经将系统特性扩展到了包含持久的作业队列和用一个新协议来通过 HTTP 提交工作请求。对于前者,Gearman 工作队列保存在内存并在一个关系型数据库内存有备份。这样一来,如果 Gearman 守护程序故障,它就可以在重启后重新创建这个工作队列。另一个最新的改良通过一个 memcached 集群增加队列持久性。memcached 存储也依赖于内存,但被分散于几个机器以避免单点故障。
Gearman 是一个刚刚起步却很有实力的工作分发系统。据 Gearman 的作者 Eric Day 介绍,Yahoo! 在 60 或更多的服务器上使用 Gearman 每天处理 600 万个作业。新闻聚合器 Digg 也已构建了一个相同规模的 Gearman 网络,每天可处理 400,000 个作业。Gearman 的一个出色例子可以在 Narada 这个开源搜索引擎(参见 参考资料)中找到。
Gearman 的未来版本将收集并报告统计数据、提供高级监视和缓存作业结果等。为了跟踪这个 Gearman 项目,可以订阅它的 Google 组,或访问 Freenode 上它的 IRC 频道 #gearman。
分享到:
相关推荐
Gearman是一个分发任务的程序框架,可以用在各种场合,与Hadoop相比,Gearman更偏向于任务分发功能。它的 任务分布非常 简单,简单得可以只需要用脚本即可完成。Gearman最初用于LiveJournal的图片resize功能,由于...
主要介绍了php使用gearman进行任务分发操作,结合实例形式详细分析了gearman的安装以及PHP使用gearman进行异步处理任务相关操作技巧,需要的朋友可以参考下
gearman下载gearman下载gearman下载gearman下载gearman下载
Laravel开发-php-gearman Gearman作业服务器工人助手
GearmanManager, 用于管理gearman员工的PHP守护进程 PHP的 PHP需求PHP 5.5.9 ( 使用这里版本测试)POSIX扩展过程控制扩展pecl/gearman或者 Net_Gearman为什么使用 GearmanManager运行Gearman工作者可能是一个乏味的任
GearMAN讲解及所带来的变革 全面介绍Gearman原理、应用
Gearman中文手册,gearman手册chm,Gearman中文详解,分享gearman技术心得,主要是为了分享技术,所以不要大家的资源分。
Gearman客户和工人优点: 全面实施工人和客户通过原始Gearman协议进行精益抽象大量的单元测试快速地小的与用其他语言编写的齿轮工客户和工人完全可互操作缺点: 缺乏优雅的高级抽象来进行工作。 多写一些样板每个...
Gearman中文手册,gearman手册chm,Gearman中文详解,分享gearman技术心得,主要是为了分享技术,所以不要大家的资源分。
gearman 文档,gearman 是个集群计算框架,通过对其扩展能够充分利用集群计算
Gearman环境搭建可能会用到的资料. gearmand-1.1.12.tar.gz libevent-2.0.22-stable.tar.gz libuuid-1.0.3.tar.gz
本文实例讲述了PHP使用gearman进行异步的邮件或短信发送操作。分享给大家供大家参考,具体如下: 一、准备工作 1、为了防止,处理业务途中出现的宕机,请配置好gearman的持久化方式。 2、使用gearmanManager来管理...
Mod-Gearman 3.x可与Nagios 3和Naemon一起使用(并且可能与Nagios 4一起使用) 它包括三个部分: 在Naemon核心中有一个NEB模块,它将servicecheck,hostcheck和eventhandler添加到Gearman队列中。 对方是执行...
该资源包括安装Gearman时可能涉及到的软件包 具体包括gearmand、gearman、php、gperf、libevent
主要内容回顾了设计模式、复杂查询和高级正则表达式等必要技术讨论选代和闭包等高级PHP概念使用Gearman说明如何在Web应用程序中执行多任务使用memcached在My SQL和PHP Web应用程序中讨论缓存的使用讨论建立PHP扩展和...
Gearman 的C#开发API和一个简单自带demo,vs2008.
"github.com/mikespook/gearman-go/worker"安装安装客户端软件包: $去获取github.com/mikespook/gearman-go/client 安装工作包: $去获取github.com/mikespook/gearman-go/worker 他们都: $去获取github....
Laravel开发-laravel-gearman-rpc Laravel/Lumen Gearman RPC。基于https://github.com/mhlavc/gearman