将一个计算密集型的或专门化的功能放在一个或多个独立的专用服务器上运行
尽管一个Web应用程序的大部分内容都与表示有关,但它的价值与竞争优势却可能体现在若干专有服务或算法方面。如果这类处理过于复杂或拖沓,最好是进行异步执行,以免Web服务器对传入的请求没有响应。实际上,将一个计算密集型的或专门化的功能放在一个或多个独立的专用服务器上运行,效果会更好。
常用的缩略词API:应用程序编程接口HTTP:超文本传输协议LAMP:Linux、Apache、MySQL与PHPPHP的Gearman库能把工作分发给一组机器。Gearman会对作业进行排队并少量分派作业,而将那些复杂的任务分发给为此任务预留的机器。这个库对Perl、Ruby、C、Python及PHP开发人员均可用,并且还可以运行于任何类似UNIX?的平台上,包括MacOSX、Linux?和SunSolaris。
向一个PHP应用程序添加Gearman非常简单。假设您将PHP应用程序托管在一个典型的LAMP配置上,那么Gearman将需要一个额外的守护程序以及一个PHP扩展。截止到年11月,Gearman守护程序的最新版本是0.10,并且有两个PHP扩展可以用—一个用PHP包裹了GearmanC库,另一个用纯PHP编写。我们要用的是前者。它的最新版本是0.6.0,可以从PECL或Github(参见参考资料)获取它的源代码。
注意:对于本文而言,producer指的是生成工作请求的机器;consumer是执行工作的机器;而agent则是连接producer与适当consumer的中介。
安装Gearman向一个机器添加Gearman需要两步:第一步构建并启动这个守护程序,第二步构建与PHP版本相匹配的PHP扩展。这个守护程序包包括构建此扩展所需的所有库。
首先,下载Gearman守护程序gearmand的最新源代码,解压缩这个tarball,构建并安装此代码(安装需要有超级用户的权限,即根用户权限)。
$wget