简介: 通过本文,了解工作分发系统 Gearman 并分发用 PHP、C、Ruby 及其他受支持语言编写的应用程序的工作负载。

尽管一个 Web 应用程序的大部分内容都与表示有关,但它的价值与竞争优势却可能体现在若干专有服务或算法方面。如果这类处理过于复杂或拖沓,最好是进行异步执行,以免 Web 服务器对传入的请求没有响应。实际上,将一个计算密集型的或专门化的功能放在一个或多个独立的专用服务器上运行,效果会更好。

常用的缩略词

API:应用程序编程接口

HTTP:超文本传输协议

LAMP:Linux、Apache、MySQL 与 PHP

PHP 的 Gearman 库能把工作分发给一组机器。Gearman 会对作业进行排队并少量分派作业,而将那些复杂的任务分发给为此任务预留的机器。这个库对 Perl、Ruby、C、Python 及 PHP 开发人员均可用,并且还可以运行于任何类似 UNIX® 的平台上,包括 Mac OS X、 Linux® 和 Sun Solaris。

向一个 PHP 应用程序添加 Gearman 非常简单。假设您将 PHP 应用程序托管在一个典型的 LAMP 配置上,那么 Gearman 将需要一个额外的守护程序以及一个 PHP 扩展。截止到 2009 年 11 月,Gearman 守护程序的最新版本是 0.10,并且有两个 PHP 扩展可以用 — 一个用 PHP 包裹了 Gearman C 库,另一个用纯 PHP 编写。我们要用的是前者。它的最新版本是 0.6.0,可以从 PECL 或 Github获取它的源代码。

请注意:对于本文而言,producer 指的是生成工作请求的机器;consumer 是执行工作的机器;而 agent 则是连接 producer 与适当 consumer 的中介。

向一个机器添加 Gearman 需要两步:第一步构建并启动这个守护程序,第二步构建与 PHP 版本相匹配的 PHP 扩展。这个守护程序包包括构建此扩展所需的所有库。

首先,下载 Gearman 守护程序 gearmand 的最新源代码,解压缩这个 tarball,构建并安装此代码(安装需要有超级用户的权限,即根用户权限)。

$ wget http://launchpad.net/gearmand/trunk/\

0.10/+download/gearmand-0.10.tar.gz

$ tar xvzf gearmand-0.10.tar.gz

$ cd gearmand-0.10

$ ./configure

$ make

$ sudo make install

安装 gearmand 后,构建 PHP 扩展。您可以从 PECL 获取这个 tarball,也可以从 Github 复制该存储库。

$ wget http://pecl.php.net/get/gearman-0.6.0.tgz

$ cd pecl-gearman

#

# or

#

$ git clone git://github.com/php/pecl-gearman.git

$ cd pecl-gearman

有了这些代码后,就可以开始构建扩展了:

$ phpize

$ ./configure

$ make

$ sudo make install

这个 Gearman 守护程序通常被安装在 /usr/sbin。可以从命令行直接启动此守护程序,也可以将这个守护程序添加到启动配置中,以便在机器每次重启时就可以启动这个守护程序。

接下来,需要安装 Gearman 扩展。打开 php.ini 文件(可以通过 php --ini 命令快速找到这个文件),然后添加代码行 extension = gearman.so:

$ php --ini

Loaded Configuration File: /etc/php/php.ini

$ vi /etc/php/php.ini

...

extension = gearman.so

保存此文件。要想验证扩展是否启用,请运行 php --info,然后查找 Gearman:

$ php --info | grep "gearman support"

gearman

gearman support => enabled

libgearman version => 0.10

此外,还可以用一个 PHP 代码片段来验证构建和安装是否得当。将这个小应用程序保存到 verify_gearman.php:

print gearman_version() . "\n";

?>

接下来,从命令行运行此程序:

$ php verify_gearman.php

0.10

如果这个版本号与之前构建和安装的 Gearman 库的版本号相匹配,那么系统就已准备好了。

gearman php 进程守护,用 Gearman 分发 PHP 应用程序的工作负载相关推荐

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

    尽管一个 Web 应用程序的大部分内容都与表示有关,但它的价值与竞争优势却可能体现在若干专有服务或算法方面.如果这类处理过于复杂或拖沓,最好是进行异步执行,以免 Web 服务器对传入的请求没有响应.实 ...

  2. 用 Gearman 分发 PHP 应用程序的工作负载(转载)

    原文 https://www.oschina.net/question/12_7687 尽管一个 Web 应用程序的大部分内容都与表示有关,但它的价值与竞争优势却可能体现在若干专有服务或算法方面.如果 ...

  3. gearman php 进程守护,php使用gearman进行任务分发

    这篇文章介绍的内容是关于php使用gearman进行任务分发 ,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 一.安装gearman 下载gearman源码包 https://laun ...

  4. C# .NET Core3.0+TopShelf 搭建服务程序 实现进程守护技术

    利用windows services实现进程守护功能 一.基本概念 守护进程(daemon)是一类在后台运行的特殊进程,用于执行特定的系统任务.很多守护进程在系统引导的时候启动,并且一直运行直到系统关 ...

  5. 【部署类】专题:消息队列MQ、进程守护Supervisor

    目录 1 背景需求 2 技术方案 2.1 消息队列 2.2 进程守护 3 源码介绍 3.1 supervisor部分 3.1.1 supervisord.conf 内容 3.1.2 MM3D.conf ...

  6. Python Twisted系列教程16:Twisted 进程守护

    作者:dave@http://krondo.com/twisted-daemonologie/  译者: Cheng Luo 你可以从"第一部分 Twist理论基础"开始阅读:也可 ...

  7. 【Android 进程保活】应用进程拉活 ( 双进程守护 + JobScheduler 保活 | 成功率最高 | 推荐使用 )

    文章目录 一. 双进程守护保活 + JobScheduler 原理 二. 双进程守护保活 + JobScheduler 源码 1.JobService 代码 2.判定服务运行工具类 3.清单文件 4. ...

  8. 进程守护系统,你懂吗?

    1.什么是进程守护系统? 进程守护系统,用于监控指定的进程,当发现目标进程不再正常工作时,就关闭该进程,并重启它. 在什么情况下使用进程守护系统了?比如说,我们的某个服务器软件,在上线后出现一个严重的 ...

  9. android双进程守护耗电,Android实现双进程守护

    做过android开发的人应该都知道应用会在系统资源匮乏的情况下被系统杀死!当后台的应用被系统回收之后,如何重新恢复它呢?网上对此问题有很多的讨论.这里先总结一下网上流传的各种解决方案,看看这些办法是 ...

最新文章

  1. python中PIL.Image和OpenCV图像格式相互转换
  2. elasticsearch 路由文档到分片
  3. centos 6.5配置samba
  4. 字节顺序:高位优先(big-endian)和低位优先(little-endian)
  5. C/C++数组指针和指针数组
  6. JAVA中通过时间格式来生成唯一的文件名
  7. 简单写一下选择排序算法
  8. java 8 foreach获取索引
  9. 在Objective-C中浅谈面向对象
  10. 【精华版】cw2vec理论及其实现
  11. osgEarth gpx文件 16.feature_gpx.earth
  12. Namp 基础使用教程
  13. 关于LNK2005的错误
  14. 写给学生看的系统分析与验证笔记(十二)——验证ω-正则属性(Verifying ω-regular properties)
  15. Java实现简易的购物系统
  16. 二义性和C++消除二义性
  17. 增量式(相对式)编码器与绝对式编码器工作原理
  18. ps里jpg格式的图怎么保存成透明的
  19. vue中请求到的数据赋值给data 对象
  20. 服务器宕机原因有哪些?服务器宕机解决方案

热门文章

  1. MySQL数据表的创建、查看、插入
  2. mysql 同步备份数据库
  3. 万网稳居国内域名主机网站榜首 西部数码第二
  4. Silverlight 控件开发记录之 extern alias” 关键字
  5. 怎样解决MySQL数据库主从复制延迟的问题
  6. alpine linux 执行文件崩溃 报错 找不到/lib/x86_64-linux-gnu/libc.so 解决方法
  7. 散列算法 SHA-1,SHA-2和SHA-256之间的区别
  8. LDAP 轻量级目录访问协议 介绍
  9. pycharm ctrl+s ctrl+alt+shift+x 同步上传代码到服务器
  10. linux centos 网络 时间 日期 同步