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是一个工作负载分发服务器和库,允许将工作分散到多个机器或者机器上的多个核心上进行异步处理。它在Web应用程序中处理耗时的后台任务时尤其有用,如文件上传、邮件发送、图片处理等。 2. PHP Gearman扩展...
4. **负载均衡**:Gearman 服务器可以自动进行负载均衡,将任务分发到空闲的 Workers 上。 综上所述,Laravel 结合 PHP Gearman 提供了一个强大而灵活的解决方案,用于处理异步任务和分布式计算,极大地提升了系统...
Gearman是一种分布式任务队列系统,它允许应用程序在不同的服务器之间分发工作负载,从而实现负载均衡和异步处理。本篇文章将详细讲解如何在Linux环境中搭建Gearman,包括依赖库的安装和Gearman服务的配置。 首先,...
通过这种方式,GearMAN允许系统将耗时的任务从请求线程中分离出来,以非阻塞的方式处理,从而显著提高了应用程序的响应能力和吞吐量。 GearMAN的主要特点包括多方式支持(支持PHP、Java、Python等多种编程语言)、...
在PHP的世界里,Gearman是一个强大的分布式任务处理框架,它允许开发者将任务分发到多台服务器上执行,从而实现负载均衡和异步处理。本文将深入探讨net_gearman-master.zip,这是一个专为PHP设计的Gearman客户端插件...
Gearman 是一个开源的分布式任务队列系统,它允许应用程序将耗时的任务分发到多台机器上异步处理,从而提高系统的响应速度和整体性能。`gearman-1.0.2.tgz` 是 Gearman 的一个特定版本,即 1.0.2 版本的源代码压缩包...
齿轮人(Gearman)是一个开源的分布式任务队列系统,主要设计用于在多台服务器之间分发计算任务,实现负载均衡和并行处理。在 Gearman 的架构中,客户端提交任务到 Gearman 服务器,而工作者(worker)则从服务器...
Gearman是一个分布式任务队列系统,它允许将任务分发到多个工作节点上,同时在这些工作节点间负载均衡和故障转移。这个系统常用于需要处理大量异步任务的场景中,比如发送电子邮件、推送通知、消息传递、导入大型...
通过将工作分发到多个服务器,Gearman提高了处理大量并发请求的能力。PHP的gearman扩展提供了与Gearman服务器通信的功能,使得开发者能够轻松地创建后台处理任务,提高应用程序的性能和响应速度。 2. Memcached.so...
齿轮人(Gearman)是一个开源的工作队列系统,它的主要目标是解耦应用程序的不同部分,使得分布式处理变得简单。 Gearman-0.8.0.tgz 是一个包含齿轮人0.8.0版本源代码的压缩包文件。下面将详细探讨齿轮人(Gearman)...
通信是通过 TCP 连接进行的,这使得 Gearman 能够有效地在多台机器之间分发负载。 安装 Gearman 包括两个步骤:首先,需要在服务器上安装 Gearmand 服务,可以通过 RPM 包管理器或者源码编译安装。接着,为了在 ...
这个扩展的核心目标是让PHP能够无缝地利用Gearman的并行计算能力,提升应用程序的性能和可伸缩性。 **Gearman简介** Gearman是一个开源的、跨平台的框架,用于在分布式环境中分发任务。它允许你将工作负载分散到多...
Gearman 是一个分布式任务分发调度框架,支持多语言、并发的任务执行,支持负载均衡。其主要特点包括: 1. 开源:Gearman 是一个开源的任务调度系统,这使得其可以被自由地使用和修改。 2. 支持多语言接口:Gearman...
Yii2扩展与Gearman的结合,让开发者能够轻松地在多台服务器之间分发工作,提高系统的可伸缩性和可靠性。 Yii2队列扩展提供的这些选项,让开发者可以根据项目需求和现有基础设施选择最适合的队列服务。使用这个扩展...
这个系统允许将任务分发到多个 worker 进程,以实现负载均衡和并发处理。在本文中,我们将深入探讨 Gearman 任务的两个关键特性:优先级和返回状态。 一、任务的优先级 在 Gearman 中,任务的优先级分为三个级别:...
Gearman是一个通用的工作队列系统,它允许应用程序将任务分发到网络中的其他机器上进行异步处理,从而提高系统的并行性和可扩展性。G2作为Gearman的一个现代化实现,旨在提供更高效、更稳定的解决方案。 在了解G2...
齿轮人(Gearman)是一个开源的工作队列系统,它的主要目标是解耦应用程序中的任务处理,使得异步处理和分布式工作负载成为可能。`gearmand-1.1.5.tar.gz` 是齿轮人(Gearman)1.1.5版本的源代码压缩包,它遵循了...
Gearman是一种用于分发任务的高性能网络应用,它可以将大量工作分发到多台计算机或多个进程上并行执行,非常适合用于构建分布式图片处理平台。 - **客户端(Client)**:客户端使用PHP+Gearman客户端扩展实现,负责...