尝试用Gearman实现分布式处理(PHP)

python代码爬取大众点评评论!直接copy就可以运行! 阅读详情
本文需要你已对Gearman有个大致了解。

顺便再推荐两篇参考文章
http://hi.baidu.com/thinkinginlamp/blog/item/ff49972b9e7378f3e6cd40aa.html (学学Gearman)
http://www.ibm.com/developerworks/cn/opensource/os-php-gearman/index.html (用 Gearman 分发 PHP 应用程序的工作负载)

更多参考大家还是自己google吧:)


先安装任务分发的Job端

安装Gearman server and library:
wget http://launchpad.net/gearmand/trunk/0.8/+download/gearmand-0.8.tar.gz
tar zxf gearmand-0.8.tar.gz
cd gearmand-0.8
./configure
sudo make
sudo make install


中间可能会遇到些问题:
在./configure的时候,可能会出现缺少libraries的情况,一般是缺少libevent和uuid这两个开发包,安装之。。。

sudo apt-get install libevent-dev
sudo apt-get install uuid-dev


安装完成后再重新配置安装,安装完成后执行
sudo ldconfig

因为本试验Client和Worker端都由PHP来实现,所以需要安装php的gearman扩展

安装Gearman PHP extension:
wget http://pecl.php.net/get/gearman-0.4.0.tgz
tar zxf gearman-0.4.0.tgz
cd gearman-0.4.0
phpize
./configure
sudo make
sudo make install


中间可能遇到的问题:
找不到phpize命令,phpize在php开发包中,所以要先安装php5-dev

sudo apt-get install php5-dev

安装完后,就可以在源码目录中执行phpize生成相关安装配置信息,接着执行后面的./configure等

make install后,它告诉你一个目录,生成的gearman.so就在那里。

根据需要考到相应PHP的扩展目录里(因为我直接用系统默认安装的php,它自动生成就在扩展中)


接下来修改php.ini以使php加载该模块:
php --ini
看下php.ini在哪里,sudo vim 修改之,在其中加入
extension = "gearman.so"

然后,开始编写client和worker端

client.php

    <?php  
      $client= new GearmanClient();  
      $client->addServer("127.0.0.1", 4730);  
      print $client->do("title", "Linvo");  
      print "/n";  
    ?>  

worker.php

    <?php  
      $worker= new GearmanWorker();  
      $worker->addServer("127.0.0.1", 4730);   
      $worker->addFunction("title", "title_function");  
      while ($worker->work());  
         
      function title_function($job)  
      {  
        $str = $job->workload();  
        return strlen($str);  
      }  
    ?>

准备工作已经完毕,试验开始
1、启动job
gearmand -d

2、启动worker
php -c /etc/php5/apache2/php.ini worker.php

3、启动client(新开终端中打开)
php -c /etc/php5/apache2/php.ini client.php

屏幕显示字符串的长度 “5”

这里,有几点需要说明一下:
1、这里直接用php cli方式运行,添加-c参数是为了加载php.ini配置文件,以加载gearman扩展
2、worker应该做成守护进程(CLI模式),可以开启多个,这样client发起的任务就会分发到各个worker分别来执行(自动负载均衡 )
这个例子由于太过简单,即使开启多个worker也无法看出效果,不过可以通过终止其中一个,可以看出系统自动切换到其他worker继续正常执行
3、同理,client也是可以开启多个的(模型请参考之前的那边日志)

4、同时,job也可以开启多个,以避免单点故障


SAP FICO CBS接口-银企直连付款平台功能开发说明书(包括测试样例、FS) 阅读详情

相关推荐

一个固定翼飞机仿真程序带你系统性上手如何实现配平(工具箱+脚本)

老规矩,该博客所用的模型和脚本已上传至百度网盘,名字为“固定翼配平训练例子”,自己自取。

zouxu634866的博客 2570

php gearman 短连接,php安装gearman扩展实现异步分步式任务

一、简介Gearman是一个分发任务的程序框架,它会对作业进行排队自动分配到一系列机器上。gearman跨语言跨平台,很方便的实现异步后台任务。php官方收录:http://php.net/manual/zh/book.gearman.php如上图,一个Gearman请求的处理过程涉及三个角色:Client -> Job -> Worker。Client:请求的发起者,可以是C,PHP...

weixin_39875754的博客 284

速腾聚创激光雷达复现FAST-LIO

记录复现FAST-LIO算法的过程和,代码梳理和理解。FAST-LIO的简化版、注释版。速腾激光雷达

abanchao的博客 2930

gearman php使用,gearman管理工具GearmanManager的安装与php使用方法示例

本文实例讲述了gearman管理工具GearmanManager的安装与php使用方法。分享给大家供大家参考,具体如下:一、gearman自带了一个gearadmin工具查看帮助信息> gearadmin --help查看状态> gearadmin --status查看worker信息> gearadmin --workers二、为什么要用GearmanManager为什么要用G...

weixin_39962153的博客 295

ShardingSphere-JDBC-若依框架集成(SpringBoot)

ShardingSphere基础知识、ShardingSphere-JDBC如何集成进若依框架中 使用的是若依框架前后端版本、动态数据源,可自行切换,默认数据源为达梦8代理端,

编程小菜鸟的笔记 8168

【笔记篇】Davinci Configurator BswM模块

AUTOSAR BSWM模块配置介绍

weixin_47571898的博客 1534

php安装gearman扩展实现异步分步式任务

一、简介 Gearman是一个分发任务的程序框架,它会对作业进行排队自动分配到一系列机器上。gearman跨语言跨平台,很方便的实现异步后台任务。php官方收录:http://php.net/manual/zh/book.gearman.php 如上图,一个Gearman请求的处理过程涉及三个角色:Client -> Job -> Worker。 Client:请求的

继续微笑lsj 1085

如何在 SAP Server Side JavaScript 里消费 destination

在SAP云平台里打开SAP HANA Web-Based Development Workbench进行服务器端JavaScript的开发。 创建一个新的package: 创建一个新的application: 创建一个新的文件google-distance-api.xshttpdest用于维护destination相关信息: host = "maps.googlea...

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 613

php gearman 定时任务,php使用gearman进行任务分发操作实例详解

php使用gearman进行任务分发操作实例详解,创建一个,客户端,操作,实例,回调php使用gearman进行任务分发操作实例详解易采站长站,站长之家为您整理了php使用gearman进行任务分发操作实例详解的相关内容。本文实例讲述了php使用gearman进行任务分发操作。分享给大家供大家参考,具体如下:一、安装gearman下载gearman源码包https://launchpad.net/...

weixin_42462007的博客 468

apt-get update时出现GPG error:... bionic InRelease:The following signatures were invalid: EXPKEYS解决方案

本文主要介绍了apt-get update时出现W: GPG error: … bionic InRelease: The following signatures were invalid: EXPKEYSIG B7B3B788A8D3785C MySQL Release Engineering E: The repository ‘… bionic InRelease’ is not signed.解决方案,希望能对使用Ubuntu系统的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 11万+

Python 爬虫实战:网站反爬机制绕过终极指南(技术原理 + 实战代码 + 避坑技巧)

在 Python 爬虫的世界里,反爬机制是每一个爬虫开发者都必须面对的挑战。网站为了保护自身数据不被恶意爬取,会设置各种反爬机制,这使得爬虫开发变得更加复杂和有趣。本文将详细介绍常见的网站反爬机制及其绕过方法,结合技术原理、实战代码和避坑技巧,帮助你成为一名优秀的爬虫开发者。

u014481728的博客 1005

php多进程并发,PHP并发多进程处理利器Gearman使用介绍

工作中我们有时候会遇到比如需要同时发布数据到多个个服务器上,或者同时处理多个任务。可以使用PHP的curl_multi的方式并发处理请求,但是由于网络和数据以及各个服务器等等的一些情况导致这种并发处理的响应时间很慢,因为在并发请求的过程中还包括记录日志,处理数据等逻辑,等待处理结果并返回,所以也不能友好的满足后台操作的体验。现在有另外一种方案,利Gearman来实现并发的需求。通过Client将请...

weixin_29122543的博客 270

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

php gearman,尝试用Gearman实现分布式处理(PHP)

本文需要你已对Gearman有个大致了解,如果不知该东东是何物,请参考《Gearman - 分布式远程过程处理框架》 http://www.linuxidc.com/Linux/2011-12/50649.htm顺便再推荐两篇参考文章本文只记录我实践的过程和其中可能遇到的问题。试验环境(虚拟机):Ubuntu 9.04 + PHP5.2.6开始了。。。先安装任务分发的Job端安装Gearman s...

weixin_32753181的博客 165

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

gearman php 分布式,转:尝试用Gearman实现分布式处理(PHP)

原文来自于http://blog.youkuaiyun.com/fdipzone/article/details/7166520本文需要你已对Gearman有个大致了解。顺便再推荐两篇参考文章http://hi.baidu.com/thinkinginlamp/blog/item/ff49972b9e7378f3e6cd40aa.html (学学Gearman)http://www.ibm.com/devel...

weixin_30949015的博客 133

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

尝试用Gearman实现分布式处理(PHP)[转]

本文需要你已对Gearman有个大致了解。顺便再推荐两篇参考文章http://hi.baidu.com/thinkinginlamp/blog/item/ff49972b9e7378f3e6cd40aa.html (学学Gearman)http://www.ibm.com/developerworks/cn/opensource/os-php-gearman/index.html (用 Gearm...

weixin_30670151的博客 90

转:尝试用Gearman实现分布式处理(PHP)

原文来自于http://blog.youkuaiyun.com/fdipzone/article/details/7166520 本文需要你已对Gearman有个大致了解。顺便再推荐两篇参考文章http://hi.baidu.com/thinkinginlamp/blog/item/ff49972b9e7378f3e6cd40aa.html (学学Gearman)http://www.ibm.com/dev...

weixin_30456039的博客 79

Gearman框架下java+php通信

在上一篇博客中,安装好Gearman和php客户端后,现在尝试下跨语言通信。 注:Gearman最强悍的地方就是它可以支持不同语言直接的交互,client端是一种语言,worker端可以是另外一种语言!中间的交互具体转化细节都封装在jobserver中处理。 这里演示的例子是:官网上面的字符串反转。 worker.php + client.java或 worker.java + clien

时刻保持危机感&对知识的渴望 4181

php resque gearman,通过Gearman实现MySQL到Redis的数据同步

对于变化频率非常快的数据来说,如果还选择传统的静态缓存方式(Memocached、File System等)展示数据,可能在缓存的存取上会有很大的开销,并不能很好的满足需要,而Redis这样基于内存的NoSQL数据库,就非常适合担任实时数据的容器。但是往往我们又有数据可靠性的需求,采用MySQL作为数据存储,不会因为内存问题而引起数据丢失,同时也可以利用关系数据库的特性实现很多功能。所以就会很自然...

weixin_35548486的博客 182

php resque gearman,通过Gearman实现MySQL到Redis的数据复制

对于变化频率非常快的数据来说,如果还选择传统的静态缓存方式(File System等)展示数据,可能在缓存的存取上会有很大的开销,并不能很好的满足需要,而Redis这样基于内存的NoSQL数据库,就非常适合担任实时数据的容器。但是往往我们又有数据可靠性的需求,采用MySQL作为数据存储,不会因为内存问题而引起数据丢失,同时也可以利用关系数据库的特性实现很多功能。所以就会很自然的想到是否可以采用My...

weixin_39656853的博客 126

gearman php mysql_通过Gearman实现MySQL到Redis的数据同步

对于变化频率非常快的数据来说,如果还选择传统的静态缓存方式(Memocached、File System等)展示数据,可能在缓存的存取上会有很大的开销,并不能很好的满足需要,而Redis这样基于内存的NoSQL数据库,就非常适合担任实时数据的容器。但是往往我们又有数据可靠性的需求,采用MySQL作为数据存储,不会因为内存问题而引起数据丢失,同时也可以利用关系数据库的特性实现很多功能。所以就会很自然...

weixin_36428079的博客 146
上一篇: 在ubuntu下安装memcache
下一篇: memcached的分布式算法–一致性hash
傲雪星枫
博客等级 码龄15年 2307粉丝 306原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值